我很难在hibernate中映射复合主键连接。这是我的架构的简化图片。请注意,我无法更改架构。
以下是类的编码方式。
树类
@Entity
@Table(name = "tree")
public class Tree implements Serializable {
@EmbeddedId
protected TreePK treePK;
@OneToOne(mappedBy = "tree")
private Activity activity;
}
Tree PK Class
@Embeddable
public class TreePK implements Serializable {
@Column(name = "id")
private Integer id;
//this is a foreign key from the volume table
@Column(name = "volume_id")
private Integer volumeId;
}
卷类:
@Entity
@Table(name = "volume")
public class Volume implements Serializable {
@Id
private Integer id;
}
活动类:
@Entity
@Table(name = "activity")
public class Activity implements Serializable {
@Id
private Integer id;
@JoinColumn(name = "tree_id", referencedColumnName = "id")
@OneToOne
private Tree tree;
}
对于Activity类: Tree有一个复合主键。活动在" one"上有一个外键。 Tree&#39的复合主键中的列(id)。 Activity类
中的以下行 @JoinColumn(name = "tree_id", referencedColumnName = "id")
抛出异常
为com.corp.Activity.tree引用了comCorp.Tree的引用名称(id)com.corp.Tree未映射到单个属性
如何在Hibernate中构建这样的关系?我必须映射到单个属性(id),尽管主键是复合的。
答案 0 :(得分:0)
Eclipselink和Hibernate都不能做到这一点。许多年前,OpenJPA是唯一可以做到这一点的JPA实现。