Hibernate 查询,返回结果设置到DTO

 

1:原生sql的查询,返回结果设置到DTO:

Query query = sessionFactoryRtData.getCurrentSession().createSQLQuery(hql.toString()).setResultTransformer(Transformers.aliasToBean(RTDataAttrDto.class));
 

2:hql查询,返回结果到DTO

"select new com.waternet.datacenter.dto.warningData.AlarmDataDto( id,alarmSettingId,deviceId,deviceName,enName,chName,dataTypeId,dataTypeName,alarmTypeId,alarmTypeName, "+
" alarmLevel,firstWarningValue,lastWarningValue,limitValue,startTime,lastWarningTime,clearTime,alarmState, "+
" alarmText,alarmTimes,createTime,lastModifiedTime,creator,lastModifier,useState ) from AlarmDataBean as ad

 

对应dto 一定要写对应的构造函数;参数个数要与hql里的查询结果一一对应,且字段名,类型要对应好。

如:

public AlarmDataDto( String id, String alarmSettingId, int deviceId, String deviceName, String enName, String chName,String dataTypeId, String dataTypeName,
String alarmTypeId, String alarmTypeName, int alarmLevel, String firstWarningValue, String lastWarningValue, String limitValue,
Date startTime,Date lastWarningTime, Date clearTime, int alarmState, String alarmText, int alarmTimes,
Date createTime, Date lastModifiedTime, String creator,String lastModifier, int useState ) { //全参构造器
super();
this.id =id ;
this.alarmSettingId =alarmS

...}          其中日期一般用 Date 类型

转载于:https://www.cnblogs.com/lj821022/p/6606997.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Hibernate Native Query查询返回DTO的步骤如下: 1. 创建一个DTO类,它包含你想要返回的字段的属性。 ```java public class UserDTO { private int id; private String username; private String email; // getters and setters } ``` 2. 编写一个SQL查询,使用Hibernate Native Query执行查询,并将结果映射到DTO对象中。 ```java String sql = "SELECT id, username, email FROM users WHERE id = :id"; Query query = session.createNativeQuery(sql) .setParameter("id", id) .setResultTransformer(Transformers.aliasToBean(UserDTO.class)); UserDTO user = (UserDTO) query.uniqueResult(); ``` 在这个例子中,我们编写了一个SQL查询,并使用Hibernate Native Query执行查询。我们使用setParameter方法设置查询参数,并使用setResultTransformer方法将查询结果映射到UserDTO对象中。 Transformers.aliasToBean方法是一个Transformer实现,它可以将查询结果自动映射到一个JavaBean对象中。在这里,我们将UserDTO.class传递给这个方法,表示将查询结果映射到UserDTO对象中。 3. 在Java代码中,使用Hibernate Session执行查询。 ```java Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); UserDTO user = null; try { String sql = "SELECT id, username, email FROM users WHERE id = :id"; Query query = session.createNativeQuery(sql) .setParameter("id", id) .setResultTransformer(Transformers.aliasToBean(UserDTO.class)); user = (UserDTO) query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { tx.rollback(); } e.printStackTrace(); } finally { session.close(); } ``` 在这个例子中,我们使用Hibernate Session打开一个数据库会话,并在try-catch-finally块中执行查询。我们使用createNativeQuery方法创建一个Hibernate Native Query对象,并使用setParameter和setResultTransformer方法设置查询参数和结果换器。最后,我们使用uniqueResult方法获取查询结果,并提交或回滚事务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值