0

@Column(name="example") の動作に問題があります。

私は User クラスを持っています:

@Entity
public class User {
     @Id
     private String username;
     ....
}

役割 1:

   @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 形式)。誰でも間違いを見つけるのを手伝ってもらえますか? ありがとう、アンドレア

編集:3つのテーブルが必要です:

  • ユーザー (ユーザー名 (pk)、パスワード ....)
  • user_role (ユーザー名、role_name)
  • 役割 (名前 (pk)、説明)

モデルのユーザー定義を変更できません。

4

2 に答える 2

1

のすべての注釈を削除し、注釈を注釈に変更しUserRolePKます。@PrimaryKeyJoinColumn@JoinColumn

于 2012-11-09T14:49:18.290 に答える
1

PrimaryKeyJoinColumn の使用法は意味がないようです。@JoinColumn だけを使用する必要があると思いますか、それとも列を基本としてマッピングしていますか?

おそらく、完全なクラスと、生成された DDL を含めます。

于 2012-11-08T13:49:10.180 に答える