Hibernate 在加载特定父级或其他映射实体属性时,如何修改HQL transformer?
这是一个重要的补充,特别是为了解决性能问题,同时能够编写高效的动态HQL查询 但是,在加载特定父级或另一个映射实体属性时,我们如何修改HQL转换器 以下代码:Hibernate 在加载特定父级或其他映射实体属性时,如何修改HQL transformer?,hibernate,hql,resulttransformer,Hibernate,Hql,Resulttransformer,这是一个重要的补充,特别是为了解决性能问题,同时能够编写高效的动态HQL查询 但是,在加载特定父级或另一个映射实体属性时,我们如何修改HQL转换器 以下代码: session.createQuery( "select st.stNumber as stNumber, st.stDate as stDate " + " from SomeTable st " + " where st.someTableId < 1000") .setResultTransfo
session.createQuery(
"select st.stNumber as stNumber, st.stDate as stDate "
+ " from SomeTable st "
+ " where st.someTableId < 1000")
.setResultTransformer( Transformers.aliasToBean(database.SomeTable.class))
.list();
有什么想法吗?你几乎是对的
首先,创建SomeTable
:
class SomeTable {
private Long stNumber;
private Date stDate;
private String someParentField;
//getters and setters
}
你的问题是:
session.createQuery(
"select st.stNumber as stNumber, st.stDate as stDate, someParent.someParentField as someParentField "
+ " from SomeTable st "
+ " JOIN st.someParent someParent"
+ " where st.someTableId < 1000")
.setResultTransformer( Transformers.aliasToBean(SomeTable.class))
.list();
session.createQuery(
选择st.stNumber作为stNumber,st.stDate作为stDate,someParent.someParentField作为someParentField
+“来自某个表st”
+“加入st.someParent someParent”
+“其中st.someTableId<1000”)
.setResultTransformer(Transformers.aliasToBean(SomeTable.class))
.list();
在这种情况下,您不需要为
SomeTable
类创建构造函数。创建DTO对象并将查询结果转换为该对象
session.createQuery(
"select st.stNumber as stNumber, st.stDate as stDate, someParent.someParentField as someParentField "
+ " from SomeTable st "
+ " JOIN st.someParent someParent"
+ " where st.someTableId < 1000")
.setResultTransformer( Transformers.aliasToBean(SomeTable.class))
.list();