Hibernate post load事件监听器 - 并非所有数据都存在

时间:2016-01-05 23:11:40

标签: java hibernate

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
  }

如何确保后期加载能够正常运行?

0 个答案:

没有答案