0

find在以下两种情况下,Hibernate EntityManager 方法的行为似乎有所不同:

情况 1 - 事务开始之前数据库中不存在实体。在交易中,find实体返回null

案例 2 - 实体在事务之前存在于数据库中。在事务中,实体是remove'd,然后是find相同的键 throws EntityNotFoundException

这是预期的行为吗?我需要在它flush之前做一个find它的行为吗?

4

2 回答 2

1

当找不到实体时,find方法 in EntityManagerthrows是出乎意料的。文档很清楚:EntityNotFoundException

返回:
找到的实体实例;如果实体不存在,则返回 null

此错误已在HHH-7861中报告。它已在 4.1.10 中修复,尚未发布。

于 2013-01-26T20:41:10.537 回答
0

好的,回答我问题的第二部分,似乎在 case 2和 theflush之间的a使它的行为与 case 1 相同。也就是说,只是返回而不抛出异常(这是我们想要的,作为异常触发回滚)。removefindfindnull

任何能告诉我为什么find应该表现不同的人都会得到答案。

于 2013-01-16T22:23:08.650 回答