@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)、説明)
モデルのユーザー定義を変更できません。