主表的主键是从表的一个复合主键
主表
@Entity
@Table(name = "user")
public class User {
@Id
@Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
private Long id;
@Column(name = "USER_NAME", length = 100)
private String userName;
@Column(name = "USER_PWD", length = 100)
private String userPwd;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "userParamKey.user")
private List<UserParam> userParams = new ArrayList<UserParam>();
}
从表
@Entity
@Table(name = "user_param")
public class UserParam implements Serializable {
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "userId", column = @Column(name = "USER_ID", nullable = false)),
@AttributeOverride(name = "openId", column = @Column(name = "OPEN_ID", nullable = false))
})
private UserParamKey userParamKey;
@Column(name = "VALUE")
private String value;
}
从表复合主键
@Embeddable
public class UserParamKey implements Serializable {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "USER_ID", nullable = false)
private User user;
@Column(name = "NAME", nullable = false)
private String name;
}
以上