无法在JPA Eclipselink中更改列名

时间:2012-11-08 11:49:49

标签: jpa eclipselink

我在使@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格式)。 任何人都可以帮我找到错误吗? 谢谢, 安德烈

编辑: 我需要有三张桌子:

  • user(用户名(pk),密码....)
  • user_role(username,role_name)
  • 角色(姓名(pk),说明)

我无法更改模型中的用户定义。

2 个答案:

答案 0 :(得分:1)

您对PrimaryKeyJoinColumn的使用似乎没有意义。我认为您应该只使用@JoinColumn,还是将列映射为基础知识?

或许包括完整的课程,以及生成的DDL。

答案 1 :(得分:1)

删除UserRolePK中的所有注释,并将@PrimaryKeyJoinColumn注释更改为@JoinColumn注释。