有一个 A 类,例如:
class A {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "DBId")
private Long DBId = null;
@OneToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
List<B> list;
}
和 B 类
class B {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "DBId")
private Long DBId = null;
}
当我想持久化 A 类的新实例时,可能有两种情况。1- A 中 B 的所有实例都是新的,在这种情况下,一个简单的 session.save(A) 就可以了。2- A 中 B 的部分或全部实例是旧的。我应该如何保存 A 以免重复 B。saveOrUpdate 会解决问题吗?或者它只是通过查看A来决定选择保存还是更新,例如如果A是新的,它也会在Bs上调用save,如果A是旧的,它也会在Bs上调用update?
此外,我看到我的代码中只有一个简单的 session.save(A),它并没有产生多余的 B。我错了吗?这可能吗?
问候
更新:在旧 B 的情况下,旧 B 的实例附加到会话,并且 DBId 设置正确。