无法更改JPA Eclipselink中的列名称
我无法使@Column(name=“example”)正常工作 我有一个用户类:无法更改JPA Eclipselink中的列名称,jpa,eclipselink,Jpa,Eclipselink,我无法使@Column(name=“example”)正常工作 我有一个用户类: @Entity public class User { @Id private String username; .... } 角色一: @Entity public class Role { @Id private String name; .... } 在很多关系中。所以我创造了一个角色记忆: @Entity
@Entity
public class User {
@Id
private String username;
....
}
角色一:
@Entity
public class Role {
@Id
private String name;
....
}
在很多关系中。所以我创造了一个角色记忆:
@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\u USERNAME和ROLE\u name(以表\u ID格式)。
谁能帮我找出错误吗?
谢谢
安德烈
编辑:
我需要三张桌子:
- 用户(用户名(pk)、密码……)
- 用户角色(用户名、角色名称)
- 角色(名称(主键)、描述)
我无法更改模型中的用户定义。您对PrimaryKeyJoinColumn的使用似乎没有意义。我认为您应该只使用@JoinColumn,还是将列映射为基础
可能包括您完整的类和生成的DDL。删除
UserRolePK
中的所有注释,并将@PrimaryKeyJoinColumn
注释更改为@JoinColumn
注释。您确定要在应用程序启动时删除表并重新创建它们吗,我的建议无关紧要:)詹姆斯,谢谢你的回答。我能请你解释一下你通过“将列映射为基础”得到了什么吗?我编辑了问题,添加了我需要获得的结果。对于您看到的代码,除了列的名称之外,它是有效的(但这并不意味着它是正确的方法,正如您告诉我的那样)。谢谢,A