【发布时间】:2012-11-08 11:49:49
【问题描述】:
我在使 @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),描述)
我无法更改模型中的用户定义。
【问题讨论】:
-
您确定要在应用启动时删除表并重新创建它们吗?
-
在这种情况下,我的建议是无关紧要的:)
标签: jpa eclipselink