JPA外键列名

时间:2011-04-02 16:55:21

标签: hibernate jpa-2.0

@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"),但没有。

1 个答案:

答案 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]。

(我替换了[]括号中的值。)

请注意,您的用户实体没有主键,这可能不是一个好主意。你想要实现什么目标?