EntityManager查询后不刷新数据
我当前的项目使用 HSQLDB2.0 和 JPA2.0 。
场景是:我查询数据库以获取 person
的 contactDetails
列表。我在 UI 中删除单个 contactInfo
但不保存该数据(取消 保存部分)。
我再次执行相同的查询,现在结果列表比之前的结果少 1,因为我在 UI 中删除了一个 contactInfo。但如果我交叉检查,该 contactInfo
在数据库中仍然可用。
但是,如果我在查询开始之前包含 entityManager.clear()
,我每次都会得到正确的结果。
我不明白这种行为。有人能为我说清楚吗?
My current project uses HSQLDB2.0 and JPA2.0 .
The scenario is: I query DB to get list of contactDetails
of person
. I delete single contactInfo
at UI but do not save that data (Cancel the saving part).
I again do the same query, now the result list is 1 lesser than previous result coz I have deleted one contactInfo at UI. But that contactInfo
is still available at DB if I cross check.
But if I include entityManager.clear()
before start of the query, I get correct results every time.
I dont understand this behaviour. Could anyone make it clear for me?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要再次查询,请尝试以下操作:
更完整的示例:
Rather than querying again, try this:
A more complete example:
clear()
的行为在其也就是说,
contactInfo
的删除不会持久。ContactInfo
不会从数据库中删除,因为您删除了ContactDetails
和ContactInfo
之间的关系,但没有删除ContactInfo
本身。如果您想删除它,则需要使用remove()
显式执行此操作,或者在关系上指定orphanRemoval = true
。The behaviour of
clear()
is explained in its javadoc:That is, removal of
contactInfo
is not persisted.ContactInfo
is not getting removed from the database because you remove the relationship betweenContactDetails
andContactInfo
, but notContactInfo
itself. If you want to remove it, you need either do it explicitly withremove()
or specifyorphanRemoval = true
on the relationship.