加载没有人知道如何防止加载集合或多对一的关联休眠?禁用属性/集合与休眠
我有一个用例,我需要加载一个对象,但调用程序可以确定某些属性是否加载。集合的一部分也是如此:某些行必须被提取,其他行则不被提取。
域类:
public class SomeClass {
private SomeClass parent;
private Set<OtherClass> collection;
}
public class OtherClass {
private Date startDate;
private Date endDate;
}
public class Dao {
public SomeClass loadClass(long id, boolean parents, boolean historicalData) {
// load SomeClass
// if parents == true, load parent, otherwise leave <null>
// if historicalData == false, load OtherClass where endDate == <null>
}
}
我已经想到了2个解决方案,但我ONT到现在,如果可能与标准或查询。
解决方案1不会将SomeClass关联到OtherClass和Hibernate配置中的父/子关系,并在代码中加载关联。
解决方案2是定义不同的映射与不同的实体名称与服务的特殊情况。
在这种情况下,调用者可以位于其他JVM或事务中,因此会话是关闭的,因此延迟加载不是真正的选项。
我无法控制是否访问某个属性,因为该对象返回给客户端,可能运行在不同的JVM或trans行动。我将在问题中澄清这一点。 – Salandur 2009-06-02 14:12:38
在这种情况下,我建议您使用基于您的用例填充的数据传输对象。 – 2009-06-02 14:56:04