2012-03-30 7 views
0

MapKeyとMapKeyColumnの注釈を理解しようとしていますが、混乱していることがわかりました。マップキーがintのところで一対一マッピングする場合

public class Connections{ 
... 
public final int getConnectionId() { 
    return this.connectionId; 
} 
@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "FK_StartpointTNA") 
public final Endpoint getStartpoint() { 
    return this.startpoint; 
} 
... 
} 

と反対側に私が

を持っている:私はint型のフィールドを持つエンティティを持っており、それが主キーではありません、私はさらに混乱して作られた an article(指定部)

を読んでいました

public class Endpoint{ 
... 
@OneToMany(mappedBy = "startpoint", fetch = FetchType.LAZY, cascade = { javax.persistence.CascadeType.REMOVE }) 
@MapKeyColumn(name = "connectionId") 
public Map<Integer, Connections> getConnections() { 
    return this.connections; 
} 
.... 
} 

本当にこれを修正する方法はわかりません。私は取得し続けています:org.apache.openjpa.persistence.ArgumentException: "接続"は "startpoint"によってマッピングされていると宣言しましたが、関連する型のフィールドではありません。

これをマップする適切な方法は何ですか?

答えて

1

あなたが開いたJIRAに投稿された人の方は、あなたのメソッドでfinalを取り除いてください。

JPA 2スペックから:

(2.1節「エンティティークラス」、21ページ)は述べていない:「エンティティ・クラスが最終であってはならないメソッドまたはエンティティクラス5月の永続的なインスタンス変数。終わりなさい。 "

+0

。私が開いたジラが言うように。私はすでにそれを知っている;)。気になるマイグレーション...奇数 – santiagozky

0

私は同じ問題を持っていたし、同じエラーメッセージ を得るが、私の場合、私はfooがフィールドを宣言しなければなりません mappedBy = "foo" と間違っていました!列ではありません。

関連する問題