假设我有一个class A,它的属性为class B。
class B我知道每个人都只会有一个class A,所以我用OneToOne. 如果我错误地将其添加class B到第二个class A,两个class As 引用相同class B(因此,使用CascadeType.ALLset,删除这些对象之一将删除另一个引用的地址)。这一切都说得通。
但是,如果我知道class B数据库中可能有多个(相同)实例,并且我希望任何class As 使用这个持久属性(如果它存在),我想我可以将此实体映射为ManyToOne并且 JPA / hibernate 会处理任何必要的检查以查看数据是否已经在数据库中(加载然后使用相等)。似乎情况并非如此。
该ManyToOne关系的工作方式与上述完全相同OneToOne- 即,一旦我删除了一个class A引用对象的class B对象,“B 类”对象也会被删除(即使在其他地方引用)。我希望 JPA / hibernate在删除之前检查该class B对象是否未被任何其他对象引用(即使使用set - 因为它被标记为关系)。class ACascadeType.ALLManyToOne
我在这里错过了什么吗?