4

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

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

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

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

4

3 回答 3

2

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

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

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

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

于 2010-01-05T23:12:18.350 回答
1

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

于 2010-01-05T23:05:45.597 回答
1

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

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

于 2010-12-15T23:34:01.967 回答