@Entity
public class User {
private String mail;
private String password;
@OneToMany(mappedBy="user")
private List<UserGroup> userGroups;
}
@Embeddable
public class UserGroupPK {
private String mail;
private String role;
}
@Entity
public class UserGroup {
@EmbeddedId
private UserGroupPK id;
private String field;
@ManyToOne
@MapsId("mail")
private User user;
}
Hibernate创建了两个表:user(邮件,密码)和usergroup(user_mail,role,field)。
我需要将user_mail列重命名为mail。我尝试在UserGroupPK中添加@Column(name="mail")
,但没有。
答案 0 :(得分:4)
我认为,以下内容应该有效:
@Entity
public class UserGroup {
@EmbeddedId
private UserGroupPK id;
private String field;
@ManyToOne(referencedColumnName = "mail")
@JoinColumn(name = "mail")
private User user;
}
请参阅hibernate文档中的相应段落5.1.7.1. Using a foreign key or an association table:
@JoinColumn属性是可选的,默认值是所有者端关系名称的串联,_(下划线)和自有端的主键列的名称。在此示例[user_mail]中,因为属性名称为[user],[User]的列id [(实际上,referencedColumnName)]为[mail]。
(我替换了[]括号中的值。)
请注意,您的用户实体没有主键,这可能不是一个好主意。你想要实现什么目标?