如何映射到JPA中的复合键

时间:2014-12-12 16:58:44

标签: hibernate jpa orm

我在JPA实体中定义了一个复合ID,实体A.在另一个实体中,实体B,我有一个@ManyToOne注释回到实体A.我正在尝试使用@JoinColumns实体B,指定构成实体A中复合键的列。

在EntityB中,我有:

@ManyToOne
@JoinColumns({
    @JoinColumn(name="Column1", referencedColumnName = "Column1"),
    @JoinColumn(name="Column2", referencedColumnName = "Column2")
})
private EntityA entityA;

我一直得到这个例外:

EntityA not mapped to a single property

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

你需要在你的问题中包含EntityA和复合id类,但一般来说你是在正确的道路上,以下是一个类似的工作例子,也许它会有所帮助

@NotNull
@ManyToOne
@JoinColumns({
    @JoinColumn(name = "ENTITYA_PARTA",
                referencedColumnName = "PARTA"),
    @JoinColumn(name = "ENTITYA_PARTB",
                referencedColumnName = "PARTB")
})
protected EntityA entityA;

和EntityA

@Entity
public class EntityA {

    @EmbeddedId
    protected EntityId id;

和EntityId

@Embeddable
public class EntityId implements Serializable {

    protected String partA;

    protected String partB;

    protected EntityId() {
    }