Hibernate映射一对多关联与约束限制
问题描述:
我有以下代码:Hibernate映射一对多关联与约束限制
@Entity
class A{
@Id
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "a", cascade = CascadeType.ALL)
private List<B> bs =new ArrayList<B>();
...
}
@Entity
class B{
...
@ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "aId", nullable = false)
private A a;
}
我想冬眠不坚持一个如果bs.isEmpty()。
有了这段代码,hibernate仍然存在,即使它里面没有B对象。
你知道这个解决方案吗?
在此先感谢
答
我不认为你可以使用注释添加约束。
我认为你所要求的可以完成一个Event Listener,它接收所有正在完成的插入。请参阅Hibernate manual, chapter 12.2 - The Event System和javadoc for PreInsertEventListener。具体而言,我认为,这种方法可能对你有用:
boolean onPreInsert(PreInsertEvent event)
Return true if the operation should be vetoed
从传递的事件,你得到的将通过PreInsertEvent的方法getEntity()
要插入的对象的实例。
在onPreInsert方法中返回true,您将停止插入。
请记住在hibernate.cfg.xml
文件中安装侦听器。