【问题标题】:How do you decide in which entity classes to put JPA NamedQuery annotations?您如何决定在哪些实体类中放置 JPA NamedQuery 注释?
【发布时间】:2010-01-05 22:56:00
【问题描述】:

假设我有一个 Customer - CustomerOrder 与持有每个订单总价值的 CustomerOrder 一对多的双向关系。

如果我有一个查询来查找特定客户的所有订单的总价值:

select SUM(o.orderValue) from CustomerOrder o where o.customer = :customer

注释在哪个实体类中是否重要?你为什么要把它放在一个或另一个?

【问题讨论】:

    标签: java jpa jakarta-ee named-query


    【解决方案1】:

    注释在哪个实体类中是否重要?

    从技术角度来看,这并不重要,因为您将使用@NamedQueryname 来调用它。

    你为什么要把它放在一个或另一个?

    但是,从“逻辑”的角度来看,将@NamedQuery 放在“自然”所属的位置肯定会简化维护。在您的示例中,我会将查询放在CustomerOrder 实体中,因为查询is 是关于查找CustomerOrder,如果我必须寻找它,这正是我希望找到它的地方.

    【讨论】:

      【解决方案2】:

      没关系。 一般原则是把它放在逻辑上属于它的地方。在你的情况下 - 最好在CustomerOrder

      【讨论】:

        【解决方案3】:

        将它们放入应在persistence.xml 中声明的XML 映射文件中。看到这个很棒的链接:arjan-tijms.omnifaces.org/2010/09/where-to-put-named-queries-in-jpa

        许多查询“自然”不属于实体(而且您还必须修改实体代码,如果您将它们放在那里,则每次需要新查询时)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 2017-03-06
          • 2021-10-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多