【问题标题】:how does the new keyword in hql work?hql 中的 new 关键字是如何工作的?
【发布时间】:2011-01-09 21:10:42
【问题描述】:

我在 jboss 的文档中找到了这个例子。

select new Family(mother, mate, offspr)
from DomesticCat as mother
    join mother.mate as mate
    left join mother.kittens as offspr

Family 类从何而来。我需要在某处导入,还是使用其完全限定的类名?

【问题讨论】:

    标签: java database hibernate orm hql


    【解决方案1】:

    如果出于其他原因发现导入,则导入是可选的。 :-)

    是的,它必须存在。它是一个不是实体的类,您创建它以以可理解的方式处理三列。它需要一个适合调用的构造函数。

    基本上,如果你这样做了:

    • 返回 List 的查询(包含三列)
    • 在列表上循环,创建一个包含列的 Family 对象,并返回这些结果的列表

    【讨论】:

    • 如果导入是可选的并且类不是实体,Hibernate 将如何找到它?它会在哪些包中寻找它?
    • @Flybywire 没错,它必须以某种方式找到:-)。如果声明为实体,是否在 Hibernate 的默认包中,或者是否导入,则可以找到它。我的回答不是很清楚,因为实体总是处于第一种情况。 :-)
    【解决方案2】:

    Family 必须是具有适当构造函数的 Java 对象。如果对象是普通映射实体(使用注解或在休眠映射 XML 中),则导入是可选的。

    【讨论】:

      【解决方案3】:

      Family 是一个普通的 POJO,带有适当的构造函数,需要声明或完全限定。

      【讨论】:

      • @flybywire 作为实体(带注释或映射)
      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 2022-12-30
      • 2020-07-17
      相关资源
      最近更新 更多