复合主键JPA表示

时间:2018-01-26 15:31:17

标签: hibernate jpa

我很难在hibernate中映射复合主键连接。这是我的架构的简化图片。请注意,我无法更改架构。

Simplified Schema

以下是类的编码方式。

树类

@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),尽管主键是复合的。

1 个答案:

答案 0 :(得分:0)

Eclipselink和Hibernate都不能做到这一点。许多年前,OpenJPA是唯一可以做到这一点的JPA实现。