Java 使用表键将一个映射到多个

Java 使用表键将一个映射到多个,java,hibernate,jpa,spring-data-jpa,Java,Hibernate,Jpa,Spring Data Jpa,我有主表商户和第二表交易: @Entity @Table public class PaymentTransactions { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id", updatable = false, nullable = false) private int id; @Column(length = 4) private int re

我有主表商户和第二表交易:

@Entity
@Table
public class PaymentTransactions {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", updatable = false, nullable = false)
    private int id;

    @Column(length = 4)
    private int reference_transaction_id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "merchant_id")
    private Merchants merchants;
商户:

@Entity
@Table
public class Merchants {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private int id;

    @Column(length = 255)
    private String name;
交易:

@Entity
@Table
public class PaymentTransactions {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", updatable = false, nullable = false)
    private int id;

    @Column(length = 4)
    private int reference_transaction_id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "merchant_id")
    private Merchants merchants;

如何将商户id(表键)配置为表交易的参考键,作为表列
商户id

我怀疑您是否应该在@JoinColumn注释中使用referencedColumnName属性,并将PaymentTransactions更改为List:

@Entity
@Table
public class Merchants {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(length = 255)
    private String name;

    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "merchant")
    List<PaymentTransactions> transactions;
}

@Entity
@Table
public class PaymentTransactions {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", updatable = false, nullable = false)
    private int id;

    @Column(length = 4)
    private int reference_transaction_id;

    @ManyToOne
    // here referencedColumnName is id column of merchant entity
    @JoinColumn(name = "merchant_id", referencedColumnName = "id", insertable = false, updatable = false) 
    private Merchants merchant;
}
@实体
@桌子
公营商人{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
私有int-id;
@列(长度=255)
私有字符串名称;
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,orphanRemoving=true,mappedBy=“merchant”)
列出交易记录;
}
@实体
@桌子
公共类支付交易{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”,updateable=false,nullable=false)
私有int-id;
@列(长度=4)
私有int引用\事务\ id;
@许多酮
//此处referencedColumnName是商户实体的id列
@JoinColumn(name=“merchant\u id”,referencedColumnName=“id”,insertable=false,updateable=false)
私人商人;
}