我有一个包含某种类型对象的数据库,我们称之为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>
但他们似乎都没有工作。
有没有办法做我想做的事,或者我必须保留现有的东西?
答案 0 :(得分:1)
尝试使用实体别名,如:
<query name="getAllObjectOnes">
select new com.example.ObjectOne(b)
from com.example.BaseObject b
</query>