1

我对hibernate知之甚少,并且正在尝试调试涉及hibernate的代码问题。问题是休眠无法获取对数据库所做的更改。我可以查询数据库并查看存在的更改,但由于某种原因,hibernate 无法获取它。

有问题的数据是一个子实体(可以这么说),上面有以下注释: @OneToMany(fetch = FetchType.EAGER, mappedBy = "parent", cascade=CascadeType.ALL)
@Fetch(FetchMode.SUBSELECT)

但是,在代码中,我看到该实体正在使用 JavassistLazyInitializer该类进行反射式获取。整个操作被包装在一个事务中(一个自定义类,其中定义了功能子集JTA,没有任何嵌套事务)。

我的问题是:

1)如何查看子选择查询?我已将 log4j 文件设置为使用log4j.logger.org.hibernate=TRACE但仍看不到子选择查询的所有内容。

2)hibernate无法检索的数据是由另一个hibernate事务使用EntityManager#persist(). 我还看到flush()在persist() 之后被调用。考虑到这一切,是否存在新的休眠事务不会读取前一个事务写入的值的情况?

欢迎任何通过此调试的建议/想法/提示。谢谢。

4

0 回答 0