我有一个数据库,其中保存某种类型的对象,我们将其称为 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>
但它们似乎都不起作用。
有没有办法做我想做的事,或者我必须保留我目前拥有的东西?
最佳答案
尝试使用实体别名,例如:
<query name="getAllObjectOnes">
select new com.example.ObjectOne(b)
from com.example.BaseObject b
</query>
关于java - 将 Java 构造函数与 Hibernate 查询结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952150/