2016-08-28 21 views
4

私は2つのテーブル "student"と "picklist"を持っています。
picklist - を国、国、都市のようなリストの共通テーブルとして使用しました。ここで
同じテーブル内の複数の列を結合するにはどうすればよいですか?

学生のクラスである:ここで

@Entity 
public class Student { 
    @Id 
    Long id; 
    String firstName; 
    String lastName; 
    Long accountId; 

    @OneToOne(fetch=FetchType.EAGER) 
    @JoinColumns({@JoinColumn(name="country",referencedColumnName = "name"), 
     @JoinColumn(name="accountId",referencedColumnName = "accountId")} 
    ) 
    PickList country; 

    @OneToOne(fetch=FetchType.EAGER) 
    @JoinColumns({@JoinColumn(name="state",referencedColumnName = "name"), 
     @JoinColumn(name="accountId",referencedColumnName = "accountId")} 
    ) 
    PickList state; 
} 

は、選択リストのテーブルです:

@Entity 
@Table(name = "picklist", uniqueConstraints = { 
    @UniqueConstraint(columnNames = {"accountId", "name"}) 
}) 
public class PickList { 
    @Id 
    long id; 

    long accountId; 
    String name; 
} 

エラー - Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: column: accountid (should be mapped with insert="false" update="false")

+0

かもしれない、私の質問は何の関連答え – Nikesh

+0

を見つける重複しているではなく、 'accountId'には?どちらのテーブルでもユニークですか? – johnnyaug

+0

これはユニークではありませんが、繰り返し可能な単純な列ですが、accountIdとnameはPickListテーブルのUniqueConstraintです – Nikesh

答えて

0

メッセージは明確である:あなたが持っていますマッピングの繰り返し列。これは、同じデータベース列を2回マッピングしたことを意味します。

(偽=更新可能な、偽= は、挿入、名前=「アカウントID」、referencedColumnNameと=「アカウントID」)は、この @JoinColumnのようにやってみ

関連する問題