2012-03-30 149 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必须声明的领域!不是专栏。