Java 如何配置一对一/@OneToOne关联以在两个表中自动插入外键

Java 如何配置一对一/@OneToOne关联以在两个表中自动插入外键,java,hibernate,jpa,hibernate-mapping,Java,Hibernate,Jpa,Hibernate Mapping,我有两个实体,分别由一对一关联SalesEntry(父项)和Receipt(子项)映射。保存SalesEntry对象时,在SalesEntry中插入外键,但在收据中未插入外键 SalesEntry.java @Entity @Table(name = "SALES_ENTRY") public class SalesEntry { public SalesEntry() { } @Id @GeneratedValue(strategy = Gene

我有两个实体,分别由一对一关联SalesEntry(父项)和Receipt(子项)映射。保存SalesEntry对象时,在SalesEntry中插入外键,但在收据中未插入外键

SalesEntry.java

@Entity
@Table(name = "SALES_ENTRY")
public class SalesEntry {

    public SalesEntry() {       
    }
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "SALES_ENTRY_ID")
    private long salesEntryId;
    @Column(name = "TOTAL_AMOUNT")
    private double totalAmount;


@ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "RECEIPT_ID", unique = true, nullable = true)
    private Receipt receipt;

...
}
@Entity
@Table(name = "RECEIPT")
public class Receipt {

    public Receipt() {
        // empty constructor
    }
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "RECEIPT_ID")
    private long receiptId;
    @Column(name = "RECEIPT_NO", unique = true)
    private String receiptNo;

    @OneToOne
    @JoinColumn(name = "SALES_ENTRY_ID")
    private SalesEntry salesEntry;

    ...
}
Receipt.java

@Entity
@Table(name = "SALES_ENTRY")
public class SalesEntry {

    public SalesEntry() {       
    }
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "SALES_ENTRY_ID")
    private long salesEntryId;
    @Column(name = "TOTAL_AMOUNT")
    private double totalAmount;


@ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "RECEIPT_ID", unique = true, nullable = true)
    private Receipt receipt;

...
}
@Entity
@Table(name = "RECEIPT")
public class Receipt {

    public Receipt() {
        // empty constructor
    }
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "RECEIPT_ID")
    private long receiptId;
    @Column(name = "RECEIPT_NO", unique = true)
    private String receiptNo;

    @OneToOne
    @JoinColumn(name = "SALES_ENTRY_ID")
    private SalesEntry salesEntry;

    ...
}
使用收据保存SalesEntry对象时,保存收据对象,但不会插入(SALES\u ENTRY\u ID)收据表中的外键


我的配置有错误吗?我想做什么?如我所料工作。

我认为你应该只使用一个按钮。从SalesEntry.java中删除多个OneOne,并在Receive属性上方的SalesEntry.java中使用OneOne。如果你需要清楚的例子,去你可以找到所有的例子一个快速的谷歌搜索给了我这个:现在不能测试出来,但它似乎涵盖了,你想要实现什么。