отображение один ко многим, где ключ карты является целым - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь понять аннотации 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;
}
...
}

а с другой стороны у меня

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: «соединения» объявили, что оно сопоставлено «точкой запуска», но это не поле связанного типа.

как правильно отобразить это?

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Когда кто-то публикует открытую вами JIRA , избавьтесь от final в ваших методах.

Из спецификации JPA 2:

(Раздел 2.1 «Класс сущности», стр. 21) гласит: «Класс сущности не должен быть окончательным. Никакие методы или постоянные переменные экземпляра класса сущности не могут быть окончательными.»

0 голосов
/ 13 сентября 2016

У меня была та же проблема, и я получал то же сообщение об ошибке но в моем случае я был не прав с mappedBy = "foo" где foo должен объявить поле! Не столбец.

...