通常字段为外键

时间:2016-09-09 14:42:23

标签: spring hibernate jpa spring-data

我有两张桌子。我想在它们之间建立关系,但问题是子表连接到父节点中的属性,而不是PK。如何将非PK字段指定为表的FK? 这是表格。用户信息:

@Entity
@Table(name="user")
public class userinformation implements Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)    
    @Column(name="USER_ID")
    private int uID;

    @Column(name="LIB_ID")
    private String libID;

    //Other attributes
}

Lib信息

@Entity
@Table(name="libinfo")
public class Auth {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="AUTH_ID")
    private int authID;

    @Column(name="LIB_ID")
    private String lib_ID;

    //Other attributes
}

它们都应该通过libID链接(肯定是唯一的)。知道如何正确实现它吗?

1 个答案:

答案 0 :(得分:0)

假设:

class User {
  @Column(name = "lib_id")
  private String libID;
}

您必须将Auth实体映射为:

class Auth {
  @JoinColumn(name = "lib_id", referencedColumnName = "lib_id")
  @ManyToOne
  private User user;
}

基本上,referencedColumnName用于通知JPA提供程序它应该使用引用实体的主键列以外的列(默认情况下使用@ManyToOne映射)。