使用带有Hibernate查询的Java构造函数

时间:2016-06-21 18:38:26

标签: java hibernate hql jpa-2.0 jpql

我有一个包含某种类型对象的数据库,我们称之为BaseObject。我的项目还有两个与BaseObject共享许多字段的其他对象,它们具有更多特定用途。我希望dao有三个函数,它们调用三个hibernate查询,getAllBaseObjects,getAllObjectOnes和getAllObjectTwos。我目前使用的查询如下所示:

<query name="getAllBaseObjects">
    from com.example.BaseObject
</query>
<query name="getAllObjectOnes">
    select new com.example.ObjectOne(parameter1, parameter2)
    from com.example.BaseObject
</query>
<query name="getAllObjectTwos">
    select new com.example.ObjectTwo(parameter1, parameter2, parameter3)
    from com.example.BaseObject
</query>

其中parameter1,parameter2等是BaseObject中的字段和其他两个对象中的构造函数参数。但是,这两个对象也有构造函数,它们接受BaseObject的一个实例,我想知道在hibernate查询中是否有任何简单的方法可以使用该构造函数。我试过了

<query name="getAllObjectOnes">
    select new com.example.ObjectOne(*) 
    from com.example.BaseObject
</query>

<query name="getAllObjectOnes">
    select new com.example.ObjectOne(com.example.BaseObject) 
    from com.example.BaseObject
</query>

但他们似乎都没有工作。

有没有办法做我想做的事,或者我必须保留现有的东西?

1 个答案:

答案 0 :(得分:1)

尝试使用实体别名,如:

<query name="getAllObjectOnes">
    select new com.example.ObjectOne(b) 
    from com.example.BaseObject b
</query>