gpt4 book ai didi

java - JPA/Hibernate 问题(@PrePersist,Session API 说明)

转载 作者:行者123 更新时间:2023-12-04 06:35:59 24 4
gpt4 key购买 nike

我目前正在为我的应用程序创建一些测试。
我遇到了一个需要涉及 JPA 的 @PrePersist 功能的问题。
不幸的是,这些拦截器在持久化、更新(等)时没有被触发,我发现使用 Hibernate 的 Session API 这个特性不起作用。这里出现了我的问题。

在应用程序中使用 Session API 的主要证明是什么,是否有机会直接检索 EntityManager 从而触发触发器?

我非常感谢有关此主题的任何提示和建议,

最佳答案

What is the main prove that Session API is used in the app



简单地说,EntityManager API 是原始 Session API 的“ shell ”。但我认为你想要另一个答案:-) 我能给出的唯一其他答案是检查源代码。或者,如果您没有源代码,则需要更改日志记录配置。将它设置为 Session 类的“跟踪”,然后您就可以准确地看到它被调用的时间。

and is there a chance to retrieve directly EntityManager so the triggers are fired ?



当然,这取决于您使用的应用程序服务器或框架。如果您有一个“真正的”应用程序服务器,您可以从中检索 EM。如果您使用的是独立应用程序,则可以使用 EntityManagerFactory 创建一个 EntityManager。但在此之前,我会检查 Hibernate 测试套件中的示例:

https://github.com/hibernate/hibernate-core/blob/master/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/LastUpdateListener.java

此外,如果您没有使用 JPA API,您仍然可以在 Hibernate 中使用事件监听器:

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#objectstate-events

关于java - JPA/Hibernate 问题(@PrePersist,Session API 说明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4872195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com