我有一个A类,它有一个B元素列表。
在我的A班中,我想补充一下:
int size;
将使用B元素的数量进行估算。所以,当我打电话给myA.getSize()
时,我会拥有它。
是否可以在hibernate映射中使用单个属性映射计数查询?
我不想加载列表,这就是我想添加大小属性的原因。
答案 0 :(得分:3)
是否可以在hibernate映射中使用单个属性映射计数查询?
是的,请使用formula:
<property name="size" type="integer"
formula="( select count(a.getBs) from A a where a.id = aid )">
</property>
Example: Various Mappings中的更多示例。
答案 1 :(得分:1)
另一种方法是在集合上使用 lazy = extra 。 reference documentation中几乎没有提到这一点,并进一步解释here。
对集合使用lazy =“extra” “聪明”的收集行为,即一些 集合操作,如size(), contains(),get()等不要触发 集合初始化。这是 只对非常大的人才有意义 集合。