Hibernate版本4.3.10-final
我有一个名为account的实体,它声明子事务表如下
@OneToMany(cascade = CascadeType.ALL, mappedBy = "account", orphanRemoval = true)
@OrderBy("transactionDate desc")
private Set<Transaction> transactionList;
事务列表是延迟加载的,hibernate在需要时加载它。我在后加载事件中执行一些操作,当我加载帐户对象时工作正常,但是当hibernate加载事务列表时(当代码访问事务列表时,每次都不会发生),我得到另一个帐户的post load事件。在这种情况下,没有为帐户正确设置后期加载数据。例如,在下面的代码中,我的日志确实显示了密钥,但是当调用getTransactionList时,hibernate再次加载帐户的深入内部,同一帐户对象无法访问密钥。 getUser不会返回null,但它也没有加载 - 所有这些都发生在已加载的对象上。
final String key = account.getUser().getKey();
if (log.isInfoEnabled()) {
log.info("got key {}", key);
}
for (final Transaction transaction : account.getTransactionList())
{
// do something
}
如何确保后期加载能够正常运行?