这类似于这里的问题:
但我想知道是否有任何方法可以自动执行这种逻辑。当我在“多”表中保留一条新记录时,该记录在“一”表中有一个外键,我希望休眠自动加载引用的实体并检查它是否存在,并访问该实体的字段(用于验证目的)。
有什么方法可以通过注释来做到这一点?
这类似于这里的问题:
但我想知道是否有任何方法可以自动执行这种逻辑。当我在“多”表中保留一条新记录时,该记录在“一”表中有一个外键,我希望休眠自动加载引用的实体并检查它是否存在,并访问该实体的字段(用于验证目的)。
有什么方法可以通过注释来做到这一点?
这就是您在持久化 Many 时默认执行的操作:
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()
.
无论您做什么,只有数据库才能保证数据的一致性(因为另一个事务可以在您加载并附加到多个事务后删除它),因此您需要在数据库中进行外键约束。