在Hibernate中保留@PostPersist中的其他实体

时间:2011-11-29 19:22:48

标签: java hibernate spring persistence

我试图在域类的@PostPersit方法中保留其他实体。

由于@PostPersist方法在域类上,我无法访问任何服务类/ entityManager - 为了解决这个问题,我使用的是ApplicationService(singleton),它具有自动装配的服务类:

@PostPersist
    public void createNotification() {
        Notification n = new Notification();
        n.setActivity(this);
        ApplicationService.getInstance().sendNotifications(n);
    }

ApplicationService方法只调用Autowired服务类中的方法:

public void sendNotifications(Notification n) {
        notificationService.distributeNotifications(n);
    }

服务类是标准的spring注释服务类,并且具有创建和保留新对象的事务方法

@Transactional
public void distributeNotifications(Long accountId, Notification n) {
    this.createNotification(n);
    ...
}

但是,附加实体永远不会被持久化 - 任何人都可以建议上述哪里出错了?我是否误解了hibernate中的事务边界?

感谢。

1 个答案:

答案 0 :(得分:0)

原因可能在于您自己创建单身人士?不应该是spring创建实例,以便它解释@Transactional注释吗?