如何使@ManyToOne实体成为hibernate中类的Id

时间:2012-02-26 02:38:23

标签: java hibernate jpa

我遇到了问题并尝试了很多方法来解决它。

问题很简单,我如何同时使用商品ID和金额作为主键?

因为这会使物品成为一个小小的斑点。如果我使用@MapsId它会给出完全相同的东西。

@Entity
public class C_Drop extends LightEntity implements Serializable {

    @Id
    @ManyToOne
    private C_Item item;
    @Id
    private double amount;
}

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class C_Drops extends LightEntity implements Serializable {

    @Id
    double id;

    @OneToMany
    private List<C_Drop> drops;
}

1 个答案:

答案 0 :(得分:1)

我自己没有这样做,但你可以使用Composite Primary Key和双列映射的组合。 e.g:

@Entity
@IdClass(C_DropPK.class)
public class C_Drop extends LightEntity {
    @Id
    private double amount;

    @Id
    @Column(name = "ITEM_ID")
    private double itemId;

    @ManyToOne
    @JoinColumn(name="ITEM_ID")
    private C_Item item;
}

然后:

public class C_DropPK {
    private double itemId;

    private double amount;
}