java - 将 Java 构造函数与 Hibernate 查询结合使用

标签 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>

但它们似乎都不起作用。

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

最佳答案

尝试使用实体别名,例如:

<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/

相关文章:

java - 测试 Web api 响应时间时出现 401 请帮忙

nhibernate - 为什么在 HQL 中直接使用列名有时才有效?

java.lang.ClassCastException : java. lang.Long 无法转换为 [Ljava.lang.Long;迭代数据库中的值

json - 在 spring data rest 中序列化时获取惰性对象

java - 删除EventListener中的实体

java - hql 不删除查询确定

java - 通过 ProcessBuilder 传递敏感数据

java - Java中的多个窗口

java - 使用 IndexColumn 从 ManyToMany 中删除

java - c3p0 中的默认连接池大小是多少