Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在加载特定父级或其他映射实体属性时,如何修改HQL transformer?_Hibernate_Hql_Resulttransformer - Fatal编程技术网

Hibernate 在加载特定父级或其他映射实体属性时,如何修改HQL transformer?

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

这是一个重要的补充,特别是为了解决性能问题,同时能够编写高效的动态HQL查询

但是,在加载特定父级或另一个映射实体属性时,我们如何修改HQL转换器

以下代码:

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();