- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我知道 JSR-000220 Enterprise JavaBeans 3.0 Final Release(持久性)规范指出:
“一般来说,可移植应用程序不应调用 EntityManager 或 Query 操作,访问其他实体实例,或修改生命周期回调方法中的关系。”
这看起来非常严格。我们有一种情况,我们想从 EntityListener 中访问 EntityManager。
在 Jboss/Glassfish 或任何其他应用服务器上的监听器中使用 EntityManager 时,是否有人遇到过任何不利影响/陷阱?
最佳答案
事实上,你是对的。 JPA 规范说明了这一点,在这种情况下,它建议使用 EJB 监听器(或非 Java EE 环境中的 Spring AOP)。
我不知道你的听众的目的。但只将日志记录、身份验证和路由等横切关注点放在其中。例如,Hibernate 引用文档使用监听器来审核所有对象修改的日志。一旦 EJB 监听器可以使用实体管理器,它就可以由 EJB 监听器(或非 Java EE 环境中的 Spring AOP)完成。 Java EE 规范允许它。因此,EJB 监听器共享其目标 EJB 使用的相同 ENC,并且通过这种方式,也共享相同的持久性上下文(实体管理器)。
如果您愿意,请查看我的个人资料。我有很多 ORM 相关问题。
问候,
关于java - 您可以从 EntityListeners 访问 EntityManagers 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/336881/
我有一堂这样的课: @Entity @Customizer(value=UsuarioCustomizer.class) @Indexes({ @Index(name="idx_login_s
我有一个带有注释的实体 @EntityListener(MyListener.class) 在 MyListener 类中,我有一个用 注释的方法 @PrePersist 在这个方法中,我是否有在实体
我有一个带有 EmebeddedId 的实体。实体上的实体监听器(加载时去除 Strings 上的空白)按预期被触发,id Embeddable 上的同一监听器根本没有被触发。 我做错了吗?如何修复?
伙计们! 如果我定义一个实体类并用 @MappedSuperclass 注释它和一个 @EntityListener ,在子类中是否还会调用监听器来处理生命周期事件? 例子: @MappedSuper
当我尝试启动服务器 JBoss 7.0 时遇到问题,因为抛出错误。当将entityListiner放在Entity上时会发生这种情况。 是否可以注入(inject)实体监听器? 跟踪: MSC0000
我们有一个仅包含实体和 persistence.xml 的持久性存档。我们有一个包含 ejb 内容的 ejb 模块。 现在,对于特定用例,我们需要添加一个 EntityListener,它可以访问服务
假设我有这个类(class): @EntityListeners({MyListener.class}) class MyClass { String name; String surname
1、简介 1.1 @entitylisteners 官方解释:可以使用生命周期注解指定实体中的方法,这些方法在指定的生命周期事件发生时执行相应的业务逻辑。 简单来说,就是监听实体对象的增删改查
我有一个与 customerBudget 实体有关联的客户。 CustomerEntityListener 将创建一个 customerBudget 实体。 我收到以下错误: IllegalState
我有一个看起来像这样的 JPA 实体。请注意 @EntityListeners 注释: import javax.persistence.EntityListeners; import org.spr
我有一个 Application 对象和一些 Form 对象。每次保存表单时,我想更新Application.lastUpdated。应用程序有一个 EntityListener,我想用它来设置 Ap
我有以下 JPA 实体 - 规则和策略。我希望如此,因此对规则的任何更新都将设置策略的最后修改日期。几个小时后,我发现我无法从 EntityListener 中调用实体管理器。 因此,我的问题是更新规
我已经创建了实体监听器 public class SomeListener { @PrePersist @PreUpdate public void someAction(fi
我正在设计数据库和实体。我需要为某些实体定义共享生命周期操作。 我可以在接口(interface)上注释 @EntityListeners 以便实现该接口(interface)的实体影响吗? @Ent
如上所述 - 如果持久调用失败,我们已经修改了模型,这意味着我们正在使用(现在已修改,但由于异常而实际上并未持久化)模型。如果这是在服务层而不是 EntityListener 中,那么我们实际上可以在
我知道 JSR-000220 Enterprise JavaBeans 3.0 Final Release(持久性)规范指出: “一般来说,可移植应用程序不应调用 EntityManager 或 Qu
我需要在 EntityListener 类中注入(inject) EntityManager,以便我可以对其执行 CRUD 操作。 POJO: @Entity @EntityListner(Audit
我使用 @EntityListeners 在保存到 Db 之前和加载之后进行操作。在我的 Listener 类中,我调用了一个 Ecryptor(它需要从配置文件中获取信息),因此不能静态调用加密器,
我正在尝试构建一个基于Restfull和Jersey1.17的Web服务。部署在Tomcat服务器上。 在我的项目中,我需要使用 hibernate4 来与我的 Oracle 11g XE 数据库进行
我有一个实体监听器,用于查找选定实体的更改。 @PostUpdate @PostPersist void onChange(RhEntity data) { InjectHelper.getI
我是一名优秀的程序员,十分优秀!