带复合键的JPA ManyToOne

时间:2014-06-23 08:04:42

标签: java-ee jpa orm

我有一个品牌实体的模型映射:

@Entity
public class Brand implements Serializable {
    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private BrandPk id;

//...
}

复合键是:

@Embeddable
public class BrandPk implements Serializable {

    private static final long serialVersionUID = 1L;

    private int id1;

    private int id2;
//...
}

现在我想加入产品实体(一个品牌,多个产品):

我会:

@Entity
public class Product implements Serializable {
    private static final long serialVersionUID = 1L;

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

@ManyToOne
// ???
private Brand brand;

//...
}

我需要什么才能正确加入我的表格实体?

table_brands 有一个PK组成两个字段:id1和id2 table_products 的PK为id,字段 id_brand 仅指id1。

id2已不再使用且根本不重要!

此映射适用于遗留数据库,遗憾的是我无法更改,因此我需要加入"忽略" ID2。 我怎么能?

1 个答案:

答案 0 :(得分:3)

如果您添加另一列说id_brand2引用id2,您可以尝试:

@ManyToOne
@JoinColumns({
     @JoinColumn(name="id_brand", referencedColumnName="id1"),
     @JoinColumn(name="id_brand2", referencedColumnName="id2")
})
private Brand brand;