使用组合键映射JPA实体

时间:2015-09-28 22:05:41

标签: java hibernate jpa

我正在尝试使用复合键映射实体,但是我需要复合键作为其他实体和String的id,这是我的课程,但我相信可能有问题。

@Entity
public class Permission implements Serializable {
    @Id
    @Column
    private String permission;

    @Id
    @ManyToOne(optional = false)
    @JoinColumn(name = "role_id", foreignKey = @ForeignKey(name = "fk_permission_role_id"))
    private Role role;

.....

1 个答案:

答案 0 :(得分:1)

假设角色中的ID是一个简单的整数,您可以使用类似的东西:

public class PermissionPK implements Serializable {
    private String permission;
    private Integer role;
}

然后将@IdClass注释添加到您的实体:

@IdClass(PermissionPK.class)
@Entity
public class Permission implements Serializable {
  @Id
  private String permission;

  @Id
  @ManyToOne(optional = false)
  @JoinColumn(name = "role_id")
  private Role role;
}

这将允许您在查找操作中使用EmployeePK实例,但其他任何内容都不需要它。