我在使 @Column(name="example") 工作时遇到问题。
我有一个用户类:
@Entity
public class User {
@Id
private String username;
....
}
角色一:
@Entity
public class Role {
@Id
private String name;
....
}
那是一个多对多的关系。所以我创建了一个 RoleMembership:
@Entity
@IdClass(UserRolePK.class)
public class RoleMembership {
@Id
@ManyToOne
@PrimaryKeyJoinColumn(name="USERNAME")
private User user;
@Id
@ManyToOne
@PrimaryKeyJoinColumn(name="ROLE")
private Role role;
....
}
如您所见,主键在 UserRolePK 中定义:
public class UserRolePK{
@Id
@Column(name="ROLE")
private String role;
@Id
@Column(name="USERNAME")
private String user;
...
}
在此类中,我使用 @Column(name="USERNAME") 和 @Column(name="ROLE") 将其名称强制为该字符串,但它不起作用:JPA 为其提供了默认名称 USER_USERNAME 和 ROLE_NAME(位于TABLE_ID 格式)。谁能帮我找出错误?谢谢,安德里亚
编辑:我需要三个表:
- 用户(用户名(pk),密码....)
- user_role(用户名,角色名)
- 角色(名称(pk),描述)
我无法更改模型中的用户定义。