2012-03-30 198 views
0

我想了解註釋MapKey和MapKeyColumn,我發現它們令人困惑。我讀an article,使我更糊塗了(確定部)映射一對多映射關鍵是一個int

我有一個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; 
} 
... 
} 

,並在另一邊,我有

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頁)指出:「實體類絕不能是最終的實體類的任何方法或持久實例變量是最後的。「

+0

好。就像我打開的傑拉所說的那樣。我已經知道,;)。該死的遷移...好奇,它在休眠下工作正常 – santiagozky 2012-04-02 12:25:47

0

我有同樣的問題,得到同樣的錯誤消息 但對我來說我是錯的 mappedBy = "foo" 其中foo必須聲明的領域!不是專欄。