Hibernate SQL查询结果映射/转换到对象/类/ Bean [英] Hibernate SQL Query result Mapping/Convert TO Object/Class/Bean
问题描述
1 2:select(table。*)/(all column)is OK
String sql =select t_student。 *来自t_student;
// String sql =select t_student.id,t_student.name,... from t_student; //选择所有列
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Student.class); //或query.addEntity(alias,Student.class);
//query.list(); [Student @ ...,Student @ ...,Student @ ...]
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //或其他变换
query.list(); // [{Student(or alias)= Student @ ...},{Student = Student @ ...}]
3:选择一些列(不是全部),是错误
String sql =select t_student。 id,t_student的t_student.name.t_student.sex;
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Student.class);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.list(); //例外:无效列/无列
我希望3能正常工作,结果可以映射到Student.class。
Like:Student [id = ?, name = ?, sex = ?,(其他字段为null / default)]
I'您可以进一步添加
.setResultTransformer(Transformers.aliasToBean(YOUR_DTO.class));
并自动将其映射到您的自定义dto对象,另请参阅返回非托管实体。 $ b
例如:
public List< MessageExtDto> getMessagesForProfile2(Long userProfileId){
查询query = getSession()。createSQLQuery(
+从messageVO中选择a。*,b。*
+作为
+INNER JOIN(SELECT max(id)AS id,count(*)AS count FROM messageVO GROUP BY messageConversation_id)as b ON a.id = b.id
+where a.id> 0
+)
.addScalar(id,new LongType())
.addScalar(message,new StringType())
..... ....你的映射
.setResultTransformer(Transformers.aliasToBean(MessageExtDto.class));
列出< MessageExtDto> list = query.list();
返回列表;
}
1 2: select (table.*)/(all column) is OK
String sql = "select t_student.* from t_student";
//String sql = "select t_student.id,t_student.name,... from t_student"; //select all column
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Student.class);//or query.addEntity("alias", Student.class);
//query.list();[Student@..., Student@..., Student@...]
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //or other transformer
query.list(); //[{Student(or alias)=Student@...},{Student=Student@...}]
3: select some column(not all of), is Error
String sql = "select t_student.id,t_student.name.t_student.sex from t_student";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Student.class);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.list(); //Exception:invalid column/no column
I want "3" to work ok, and let the result can be mapped to Student.class.
Like: Student[id=?, name=?, sex=?, (other field are null/default)]
I've no idea for this error, help me please!
You can go further and add
.setResultTransformer(Transformers.aliasToBean(YOUR_DTO.class));
and automatically map it to your custom dto object, see also Returning non-managed entities.
For example:
public List<MessageExtDto> getMessagesForProfile2(Long userProfileId) {
Query query = getSession().createSQLQuery(" "
+ " select a.*, b.* "
+ " from messageVO AS a "
+ " INNER JOIN ( SELECT max(id) AS id, count(*) AS count FROM messageVO GROUP BY messageConversation_id) as b ON a.id = b.id "
+ " where a.id > 0 "
+ " ")
.addScalar("id", new LongType())
.addScalar("message", new StringType())
......... your mappings
.setResultTransformer(Transformers.aliasToBean(MessageExtDto.class));
List<MessageExtDto> list = query.list();
return list;
}
这篇关于Hibernate SQL查询结果映射/转换到对象/类/ Bean的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!