1

这类似于这里的问题:

使用外键字段的最佳实践

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

有什么方法可以通过注释来做到这一点?

4

1 回答 1

2

这就是您在持久化 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().

无论您做什么,只有数据库才能保证数据的一致性(因为另一个事务可以在您加载并附加到多个事务后删除它),因此您需要在数据库中进行外键约束。

于 2012-10-17T20:49:35.843 回答