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