我有一个类,该类具有自动获取的集合,但是以一种懒惰的方式进行,因为并非总是需要它。我有一个依赖于该集合的方法,但我希望它不会触发延迟加载(如果尚未触发)。有没有一种方法可以在不触发PersistentBag
的情况下确定是否未加载boolean hasNotAlreadyLoaded(PersistantBag bag)
?
示例类:
class MyClass {
private List<MyThings> toybox;
@OneToMany (fetch = FetchType.LAZY, mappedBy = "toyBox")
public List<MyThings> getToybox () {
return toybox;
}
public void setToybox (List<MyThings> toybox) {
this.toybox = toybox;
}
@Transient
public List<String> toyNames() {
if (hasNotAlreadyLoaded(this.toybox) {
return null; // Can't run right now; data not available
}
return parseToybox(this.toybox);
}
}
因此,问题是
.size()
应该如何检查袋子是否已装满?检查我尝试过的,但这会触发加载... 最佳答案
如果您使用JPA2,则可以使用PersistenceUnitUtil
进行操作,如下所示
PersistenceUnitUtil unitUtil = em.getEntityManagerFactory().getPersistenceUnitUtil();
Assert.assertTrue(unitUtil.isLoaded(myclassInstance));
Assert.assertFalse(unitUtil.isLoaded(myclassInstance, "toyBox"));