2016-03-14 46 views
0

我有两个实体AB与多对多的关系。实体A具有保存为字符串的枚举属性C。现在我想要B从所有连接的As获得最大值C从ManyToMany链接对象派生属性

我可以很容易地写出一个JPA查询,但是你把查询跨越两个实体的位置在哪里?我正在使用一次只能与一个实体一起工作的DAO。我想在Java中一个循环中从B中获得所有A,这样它就可以在一个事务中运行,但我认为这可能会导致只需要一个事务的许多选择。

欢迎任何推荐。

UPDATE:

请看下面的例子:

一家珠宝店有珠宝一一对多的关系。现在我想要有一个传递属性“largestPieceSize”,它反映了连接实体的size属性的max()值。

回答

1

循环是非常低效的解决方案,因为它不必要地从db获取大量不需要的数据。

通常,编写一个JPQL查询,选择查询中涉及的任何实体,并将该查询放入该实体的DAO类。

由于您在这里返回B,在我看来,将查询放在DAO<B>是最自然的选择。

+0

我现在有一个查询为给定的实体对象设置属性。但是,我是否需要明确地为每个对象运行该对象? –

+0

@HubertGrzeskowiak我建议你问一个关于它的单独问题,因为它与这个问题中的问题无关。 –