我分享的是
Foo
web应用程序中的java实体。
@Entity
@Table(name="FOO")
public class Foo {
@Id
@Column(name="FOO_ID", nullable=false)
private UUID fooId;
@OneToOne(mappedBy="Foo", cascade=CascadeType.ALL,
orphanRemoval=true)
@NotFound(action=NotFoundAction.IGNORE)
@LazyCollection(LazyCollectionOption.FALSE)
private Bar bar;
@OneToOne(mappedBy="Foo", cascade=CascadeType.ALL,
orphanRemoval=true)
@NotFound(action=NotFoundAction.IGNORE)
@LazyCollection(LazyCollectionOption.FALSE)
private Zoo zoo;
}
和
Bar
有
OneToOne
福
实例和子实例之一
酒吧
或
Zoo
. 一旦你完成了表格
CrudRepository.save(foo)
唯一的出口入口
福
酒吧
或
动物园
福
实例。
-
填写表单并保存它,然后创建一个记录
和
每个表中的实例
FooTable
和
BarTable
-
在中找不到记录
ZooTable
这是意料之中的。
-
我又重温了一遍
福
-
可缩放
zoo_id
其父项作为外键
foo_id
但映射到形成数据的其余列为NULL。
我放了一个断点
save()
方法在应用程序中预期当页面被加载时,它会被命中,但它从来没有被击中。看起来应用程序绕过了正确的出口入口来持久化到DB,而是使用一个隐藏的后门出去并持久化到DB。
我正在努力寻找答案,但没有成功。我读了一些关于
jpa auto save
一对一
福
酒吧
或
动物园
福
实例,它将期望获取丢失的子实体(?)但既然没有发现hibernate或spring数据,jpa单独或协同工作会创建一个幻象条目?