JPA ManyToOne与复合键

qpgpyjmq  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(105)

我有一个Brand实体的模型Map:

@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;
//...
}

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

@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:id 1和id 2 table_products 有一个带id的PK,还有一个字段id_brand,正好对应于id 1。
    id 2不再使用,也不再重要!

这个Map是针对一个遗留数据库的,不幸的是我不能更改它,所以我需要连接“ignoring”id 2。我怎么能?

wpcxdonn

wpcxdonn1#

如果你添加另一个列,比如id_brand2引用id2,你可以这样做:

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

xfb7svmp2#

由于JDK 8不再需要@JoinColumns Package 器,可以像这样:

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

相关问题