2011-10-06 76 views
2

我有一个实体客户端和一个实体会话。客户端具有引用Session实体的字段currentSession。在某些时候,我最终会删除会话,有时这是客户的当前会话。有没有什么办法可以指示我的持久性提供者nullcurrentSession客户端字段,如果它引用了我正在删除的会话?将所有对被删除实体的引用都清空

@Entity 
public class ClientEntity { 

    @OneToOne 
    private SessionEntity currentSession; 
} 

当我完成某个会话时;我想要这样删除它。请注意,session也不能保证客户的当前会话。

entityManager.remove(session); 

我可以在代码中完成所有工作,但那样会很丑陋;我希望持久性提供者为我处理这种关系管理。

回答

2

据我所知,你正在谈论的是很多人在Hibernate中错过的东西,像Cascade.SET_NULL。这已经被讨论过herethere

作为海报建议的一个,你需要自己在拦截器或侦听器中做,或者找到另一种方法来实现你确切需要的东西。

+0

你能解释为什么http://stackoverflow.com/questions/1012874/hibernate-unidirectional-parent-child-relationship-delete-performs-update-on有休眠设置为空作为响应删除数据? – lhunath

+0

你让我在这里 - 我不知道。很可能有一部分我们不知道的故事。即使有可能进行复制,我真的怀疑Hibernate是否会捕获所有代表特定数据条目的POJO,并将引用设置为null。 – forker

相关问题