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

hibernate-spring-jpa中的双向一对一

  •  0
  • nirvair  · 技术社区  · 7 年前
    class Transaction implements Serializable {
    
        @OneToOne(mappedBy = "transaction")
        @JoinColumn(name = "invoice_id", nullable = false)
        private InvoiceDetails invoice;
    
        // some other columns, getter and setter
    }
    
    class InvoiceDetails implements Serializable {
    
        @OneToOne(mappedBy = "invoice", fetch = FetchType.LAZY)
        @JoinColumn(name = "transaction")
        private Transaction transaction;
    
        // some other column and getter setter
    }
    

    编译时出错- Unknown mappedBy in: com.project.model.Transaction.invoice, referenced property unknown: com.project.model.InvoiceDetails.transaction

    但是,当我移除 mappedBy = "invoice" 它从invoicedetails编译。但是,事务表中有一列引用invoicedetails。invoicedetails中有一列存储来自transaction的id。

    我还没有试着去获取数据。我刚刚看到数据库中的列。

    1 回复  |  直到 7 年前
        1
  •  3
  •   chubock    7 年前

    当你在 JPA ,您应该只设置 mappedBy 在其中一个地方。没有的那个 地图绘制者 将在其表中有一列具有该关系的外键约束,另一列将没有该关系的任何列。因为 地图绘制者 指示此关系已由您在关系的另一端指定的属性处理。