我在使@Column(name =“example”)工作时遇到了问题。
我有一个User类:
@Entity
public class User {
@Id
private String username;
....
}
角色一:
@Entity
public class Role {
@Id
private String name;
....
}
这是在ManyToMany关系中。所以我创建了一个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格式)。 任何人都可以帮我找到错误吗? 谢谢, 安德烈
编辑: 我需要有三张桌子:
我无法更改模型中的用户定义。
答案 0 :(得分:1)
您对PrimaryKeyJoinColumn的使用似乎没有意义。我认为您应该只使用@JoinColumn,还是将列映射为基础知识?
或许包括完整的课程,以及生成的DDL。
答案 1 :(得分:1)
删除UserRolePK
中的所有注释,并将@PrimaryKeyJoinColumn
注释更改为@JoinColumn
注释。