【发布时间】:2013-06-24 13:55:08
【问题描述】:
我将实现类似于 Facebook 通知和此网站的功能(StackOverflow 的通知会通知我们是否有人为我们的问题写评论/答案等)。请注意,用户会将我的应用程序用作网站而非移动应用程序。
我遇到了以下answer 获取结果,但我需要推送结果而不是获取。
根据建议,我在我的实体类中创建了一个简单的方法并向其中添加了@PostPersist,但它没有工作,因此基于this answer 我添加了 persistence.xml 文件来定义侦听器,但在 session.save 之后(用户) aftersave 方法没有被触发。
User.java
@Entity
public class User{
.....
@PostPersist
public void aftersave(){
System.err.println("*****this is post persist method****");
}
}
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<property name="hibernate.ejb.event.pre-insert" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.pre-update" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.pre-delete" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-insert" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-update" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-delete" value="my.hibernate.events.listeners.Listener" />
pom.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.1.Final</version>
<type>jar</type>
</dependency>
【问题讨论】:
-
取决于您使用的数据库引擎;大多数不支持更改侦听器,这是来自Postgres docs 的示例。您可能可以使用hibernate listener,在您想要的实体上使用
@PostPersist应该可以做到这一点。 -
@BoristheSpider 问题已更新
标签: mysql hibernate jakarta-ee struts2 notifications