【发布时间】:2010-02-14 20:14:25
【问题描述】:
假设你有一个类B 带有延迟加载的属性c。并且这在系统中的任何地方都很好,除了以下内容:
您有一个类 A,其属性为 b,属于类 B。每当您加载 A 类型的实体时,您都希望非延迟加载完整的 a.b.c 链。
有没有办法在 Hibernate 中设置这种类型的逻辑?
编辑:
也可以使用作为 SQL 表达式的 formula 定义属性。文档说:
衍生出一个强大的功能 特性。这些属性是由 定义只读。该物业 值是在加载时计算的。你 将计算声明为 SQL 表达。然后这转化为 SQL 中的 SELECT 子句子查询 加载实例的查询:
<property name="totalPrice"
formula="( SELECT SUM (li.quantity*p.price) FROM [...] )"/>
如果它是一个返回 Hibernate 对象的 Hibernate 查询,这将起作用。
编辑 2:
其他想法包括声明一个类B2,它与B 完全相同,只是它的C 属性不是延迟加载的。
目前的选项是:
- 按照 skaffman 的建议,每次都依赖查询。
- 在属性中使用公式来获取我想要的字段,但没有对象。
- 使用非惰性
b.c创建一个B2类。 (有点丑)。
【问题讨论】: