代码之家  ›  专栏  ›  技术社区  ›  DaeYoung

hibernate+spring数据jpa会自动创建一个与OneToOne关系的父实体的子实体记录吗?

  •  1
  • DaeYoung  · 技术社区  · 6 年前

    我分享的是 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) 唯一的出口入口 酒吧 动物园 实例。

    1. 填写表单并保存它,然后创建一个记录 每个表中的实例 FooTable BarTable
    2. 在中找不到记录 ZooTable 这是意料之中的。
    3. 我又重温了一遍
    4. 可缩放 zoo_id 其父项作为外键 foo_id 但映射到形成数据的其余列为NULL。

    我放了一个断点 save() 方法在应用程序中预期当页面被加载时,它会被命中,但它从来没有被击中。看起来应用程序绕过了正确的出口入口来持久化到DB,而是使用一个隐藏的后门出去并持久化到DB。

    我正在努力寻找答案,但没有成功。我读了一些关于 jpa auto save

    一对一 酒吧 动物园 实例,它将期望获取丢失的子实体(?)但既然没有发现hibernate或spring数据,jpa单独或协同工作会创建一个幻象条目?

    0 回复  |  直到 6 年前