自动确认ManyToOne的外键约束持久化

时间:2012-10-17 20:10:06

标签: hibernate

这与此处的问题类似:

Best practice for working with Foreign key fields

但我想知道是否有任何方法可以自动执行这种逻辑。当我在“many”表中记录一条新记录时,在“one”表中有一个外键,我希望hibernate自动加载引用的实体并检查它是否存在,并访问该实体的字段(用于验证目的) )。

通过注释以任何方式做到这一点?

1 个答案:

答案 0 :(得分:2)

这是您在持久化许可时默认执行的操作:

One one = (One) session.get(One.class, oneId); // get the one entity from the database
Many many = new Many();
many.setOne(one);
session.save(many);

如果您只需要引用该引用,而不实际从数据库加载,请使用session.load()代替session.get()

无论你做什么,只有数据库可以保证你的数据的一致性(因为另一个事务可以在你加载它并附加到许多之后删除它),所以你需要数据库中的外键约束。 p>