【问题标题】:Is there a way to define named queries not within entity classes nor a package-info.java?有没有办法在实体类和 package-info.java 中定义命名查询?
【发布时间】:2017-08-04 03:05:12
【问题描述】:

有没有办法在 Hibernate 中注册不在实体类或 package-info.java 中的命名查询?

目前,我的命名查询是通过包装在 package-info.java 类中的 aorg.hibernate.annotations.NamedQueries 中的注释 org.hibernate.annotations.NamedQuery 定义的,但是当查询在不是实体的服务类中定义时,它应该具有public 范围或包私有(不显式,如果变量没有修饰符)在上述注释中可见,因为它们存在于不同的类中。我想知道是否可以通过定义将查询范围缩小到单个类(使它们private) 并将它们注册到 Hibernate 的同一个类中。

【问题讨论】:

    标签: java hibernate named-query


    【解决方案1】:

    使用 Java Persistence API (JPA),它是一种 Java 规范,用于访问、持久化和管理 Java 对象/类和关系数据库之间的数据。

    映射文件中提到的类以及包含 persistence.xml 文件(如果已打包)的 JAR 中的注释类会自动注册。如果应用程序尚未打包在 JAR 中,ObjectDB(作为扩展)会自动在包含 META-INF/persistence.xml 文件的类路径根目录下注册类。其他类必须使用类元素(用于单个类注册)或 jar-file 元素(用于注册 jar 文件中的所有类)显式注册。

    【讨论】:

    • 亲爱的 Tehima,如果您从其他网站 (objectdb.com/java/jpa/entity/persistence-unit) 复制/粘贴,您需要引用作者/来源(就像在论文中一样:D)
    • 顺便说一句,你实际上并没有回答他的问题。它是关于命名查询
    • @Matt 我认为您应该再次阅读问题,然后阅读资源,而不是在此处粘贴。所以你会更好地理解名称查询是如何在类/包之外注册的。
    • 我做到了,我仍然相信您的回答与问题无关。例如,您使用 JPA 的第一个建议是没有意义的,因为他已经这样做了,因为 Hibernate 是 JPA 的实现。您是否认识到对您的回答投了三票反对?
    猜你喜欢
    • 2021-10-21
    • 2012-10-30
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多