- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如果实体类及其父类(super class)都实现了用 javax.persistence.PostLoad
注释的方法,会发生什么?必须调用哪个方法以及首先调用哪个方法?它是否取决于方法的可见性(私有(private)、公共(public))?
(Hibernate 默认 session 根本不调用此类方法,我将使用 Hibernate PostLoadEventListener
实现解决方法。)
最佳答案
让我复制 Java Persistence API 2.0 FR 规范的一些部分,我相信这可能会回答您的问题。
3.5.1 生命周期回调方法
The callback methods can have public, private, protected, or package level access, but must not be static or final.
3.5.4 实体生命周期事件的多种生命周期回调方法
If multiple classes in an inheritance hierarchy—entity classes and/or mapped superclasses—define entity listeners, the listeners defined for a superclass are invoked before the listeners defined for its subclasses in this order.
(...)
If a lifecycle callback method for the same lifecycle event is also specified on the entity class and/or one or more of its entity or mapped superclasses, the callback methods on the entity class and/or superclasses are invoked after the other lifecycle callback methods, most general superclass first.
下面的部分提供了一个可能会解决您的问题的非常详细的示例:
3.5.5 示例
There are several entity classes and listeners for animals:
@Entity
public class Animal {
....
@PostPersist
protected void postPersistAnimal() { .... }
}
@Entity
@EntityListeners(PetListener.class)
public class Pet extends Animal {
....
}
@Entity
@EntityListeners({CatListener.class, CatListener2.class})
public class Cat extends Pet {
....
}
public class PetListener {
@PostPersist
protected void postPersistPetListenerMethod(Object pet) { .... }
}
public class CatListener {
@PostPersist
protected void postPersistCatListenerMethod(Object cat) { .... }
}
public class CatListener2 {
@PostPersist
protected void postPersistCatListener2Method(Object cat) { .... }
}If a PostPersist event occurs on an instance of Cat, the following methods are called in order:
- postPersistPetListenerMethod
- postPersistCatListenerMethod
- postPersistCatListener2Method
- postPersistAnimal
希望对您有所帮助!
关于Java EE 持久性。嵌套@PostLoad。 supercalss中的PostLoad回调方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8150322/
我想了解为什么一些 Jakarta EE 规范是空的。 例如 Jakarta Annotations规范由免责声明和快速描述(3 行)组成,但是有 Javadoc . 当 JCP 负责 J2EE 规范
我们将在我们的开发中使用 WebSphere 8.0 应用服务器。 我们的网络应用程序使用 Amazon aws java sdk,而后者又使用 Apache http-client 4.1。 但是
Java EE Web Profile 认证服务器(如 JOnAS)和 Java EE Full Platform 认证服务器(如 JBoss AS)有什么区别? 最佳答案 这是一张很好的图片来解释它
Java EE 5 和 Java EE 6 的主要区别是什么? 最佳答案 Oracle 有一篇由三部分组成的文章详细介绍了这些更改:Introducing the Java EE 6 Platform
自从我将 web.xml 从 Java-EE-5 迁移到 Java-EE-6 后,我的应用程序出现问题。这是我部署应用程序时得到的堆栈跟踪: 24 août 2011 14:10:45 org.apa
我想让我的 Java EE 应用程序可插入。主应用程序将部署在一个ear 中,但它在EJB 中的代码将包含插件的入口点。插件可以部署在它们自己的 jar 文件中。有什么好的框架可以做到这一点吗?我正在
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我有一个关于 EE 容器如何控制事务的问题。这是为我的问题提供一些上下文的伪代码。这不是我编码的方式,所以请留在问题上,不要将主题演变成其他内容。 考虑以下两个服务和相关 Controller 。这两
如果在应用程序初始化期间发生异常,是否有任何方法可以防止 Java EE 应用程序启动?在从 JSR-77 抛出未处理的异常之后,我基本上是在寻找一种方法来使应用程序进入“j2ee.state.fai
我们正在开发几个独立的应用程序/模块,我们将它们部署到 Glassfish 3.1.1 应用程序服务器上。在某些情况下,这些应用程序需要通过远程接口(interface)调用彼此的方法。打包这些远程接
我对 Java 有所了解,但对 Enterprise Java 完全陌生。我正在尝试使用 NetBeans 6.1 和 GlassFish Application Server。 请指导我一些资源,这
这个问题在这里已经有了答案: Java / Jakarta EE web development, where do I start and what skills do I need? [close
我有现有的Java EE Web应用程序。我还有一个新的Grails 1.3.7应用程序。 要求是将此Grails应用程序嵌入现有Java EE应用程序中,并将其部署在一个war文件中。请让我知道是否
我熟悉 LAMP 堆栈,多年来已经成功部署了一些基于它的网络站点。我使用过从 Apache + modPerl 到 PHP、Ruby 和 Rails 的一切。通过充分利用缓存,我的 Rails 站点可
这个问题已经有答案了: What exactly is Java EE? (6 个回答) 已关闭 8 年前。 我意识到它的字面意思是Java Enterprise Edition。但我要问的是,这到底
我当前在服务器上有一个 Java EE 应用程序。它使用struts2和Hibernate。我需要访问客户端计算机并搜索客户端计算机检测到的所有蓝牙外设的MAC地址。 那么问题是:如何访问客户端计算机
我们在 StatelessSessionBean 中有一个性能不佳的业务方法。为了提高性能,我们希望将此业务方法拆分为多个异步方法调用。 问题是这些异步方法必须在同一个事务中运行(它们必须使用同一个
希望使用 JSTL 和 Apache Torque 以及某种模板引擎来扩展当前的 Java EE 项目,以便我们可以轻松修改 View 。 有什么建议? 最佳答案 我想 Freemarker是领先的
我有一个在 tomcat 上运行的非常大的 Java EE 应用程序。不幸的是,最近我遇到了堆空间和内存泄漏错误。 所以我想知道是否有一个工具可以帮助我监控我的应用程序并给我一个每个对象的可视化展示,
这个问题在这里已经有了答案: What exactly is Java EE? (6 个答案) 关闭 4 年前。 我知道这个问题已经被问了一百万次,我也做了功课,但最后一件事我不完全理解的是,是否有
我是一名优秀的程序员,十分优秀!