这与此处的问题类似:
Best practice for working with Foreign key fields
但我想知道是否有任何方法可以自动执行这种逻辑。当我在“many”表中记录一条新记录时,在“one”表中有一个外键,我希望hibernate自动加载引用的实体并检查它是否存在,并访问该实体的字段(用于验证目的) )。
通过注释以任何方式做到这一点?
答案 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>