我有两张桌子。我想在它们之间建立关系,但问题是子表连接到父节点中的属性,而不是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
链接(肯定是唯一的)。知道如何正确实现它吗?
答案 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
映射)。