将 Java 构造函数与 Hibernate 查询一起使用
Using Java constructors with Hibernate queries
我有一个包含特定类型对象的数据库,我们将其称为 BaseObject。我的项目还有两个与 BaseObject 共享许多字段的其他对象,它们具有更具体的用途。我希望 dao 具有三个函数,调用三个休眠查询、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 实例的构造函数,我想知道是否有任何简单的方法可以在休眠查询中使用该构造函数。我试过了
<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>
我有一个包含特定类型对象的数据库,我们将其称为 BaseObject。我的项目还有两个与 BaseObject 共享许多字段的其他对象,它们具有更具体的用途。我希望 dao 具有三个函数,调用三个休眠查询、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 实例的构造函数,我想知道是否有任何简单的方法可以在休眠查询中使用该构造函数。我试过了
<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>