2017-02-20 9 views
2

私はMysqlに2つのテーブルを持っています.1つはuserで、もう1つはuserRolesです。どちらもプロジェクトの既存のテーブルです。現在の外部キーはlogin_id(varchar)です。@OneToManyマッピングのHibernateユーザーストリングフィールド

getInt() can not parse to 'userLoginName'.

TABLES:

ユーザー:

user_id int(11) 
login_name varchar(50) 
password varchar(50) 
status varchar(1) 

user_roles:

user_role_id int(11) 
login_name varchar(50) #fk 
user_role_name varchaar(100) 

が、私はこの2つの表で@ManyToOneマッピングを作成することができ、私はエラーを取得しますは他の解決策でなければStringを使ったマッピングを行う方法はありますか?同じデータベースを持つ既存のプロジェクトのために、データ型を変更することはできません。私はHibernateを使って支援プロジェクトを作成しています。

+1

は、あなたがあなたのエンティティクラスに持っているもの投稿することができますか? –

答えて

2

login_nameフィールドに参加するとします。

これを試してみてください:

ユーザの役割実体

@ManyToOne 
@JoinColumn(name = "login_name", referencedColumnName = "login_name") 
private User user; 

Userエンティティ

@OneToMany(mappedBy = "user") 
private Set<UserRole> roles; 
+0

ありがとうトンMaciej Kowalski –

2

@Maciejコワルスキーの答えが正解です。

あなたは、このようにそれを行うことができます。

@Entity 
@Table(name = "USER") 
public class User { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "USER_ID", nullable = false) 
    private Long userId; 

    @Column(name = "LOGIN_NAME", nullable = false, length = 256) 
    private String loginName; 

    @Column(name = "PASSWORD", nullable = false, length = 64) 
    private char[] password 

    @Enumerated(EnumType.STRING) 
    @Column(name = "STATUS", nullable = false) 
    private Status status = Status.ACTIVE; 

    @ManyToMany(targetEntity = UserRole.class) 
    @JoinTable(name = "USER_ROLE_MAPS", joinColumns = {@JoinColumn(name = "LOGIN_NAME")}, inverseJoinColumns = { 
      @JoinColumn(name = "ROLE_ID")}) 
    private Set<UserRole> userRoles; 
    //... getter and setter 
} 



@Entity 
@Table(name = "USER_ROLE", uniqueConstraints = {@javax.persistence.UniqueConstraint(columnNames = {"USER_ROLE_NAME"})}) 
public class UserRole { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "ROLE_ID", nullable = false) 
    private Long roleId; 

    @Column(name = "USER_ROLE_NAME", nullable = false) 
    private String roleName; 

    //... getter and setter 
} 
+0

ありがとうトントンジャック –

関連する問題