主外键的JPA-Hibernate映射

时间:2015-07-08 20:48:51

标签: java hibernate jpa ejb

我对JPA映射有一点问题。 我想这样做:

我有一张桌子'sale',它有一个id(ven_cod)。

我有一个表'credit_sale',它的pk应该是一个销售点,这意味着一些销售可以是credit_sale。

例如,我有2个销售,代码为01和02.第二个是credit_sale,而不是表'credit_sales',我将在pk 02中注册。

我如何用jpa-hibernate映射?我试过这个,但没有用:

@Entity
@Table(name = "venda_credito")
public class VendaCredito {

    private long cod;
    private Cliente cliente;
    private StatusPagamento statusPagamento;
    private Date dataPagamento;

    @Id
    @JoinColumn(name = "ven_cod")
    @OneToOne
    public long getCod() {
        return cod;
    }

    .
    .
    .
@Entity
@Table(name = "venda")
public class Venda  {

    private long cod;


    @Id
    @GeneratedValue
    @Column(name = "ven_cod")
    public long getCod() {
        return cod;
    }

    .
    .
    .

我该怎么做才能完成这项工作?

1 个答案:

答案 0 :(得分:0)

您可以使用派生身份。

VendaCredito更改为:

@Entity
@Table(name = "venda_credito")
public class VendaCredito {

    private long cod;
    private Venda venda;
    private Cliente cliente;
    private StatusPagamento statusPagamento;
    private Date dataPagamento;

    @Id
    public long getCod() {
        return cod;
    }

    @MapsId
    @JoinColumn(name = "ven_cod")
    @OneToOne
    public long getCod() {
        return cod;
    }
    .
    .
    .

这在JPA 2.1规范第2.4.1.3节中讨论。 4。