Привет, ребята Я переношу приложение с помощью hibernate из xml в JPA-аннотации. В настоящее время я застреваю при отображении карты объектов с составным идентификатором, используя аннотации Вот как я пытаюсь это сделать.Сопоставление коллекции карт с аннотациями JPA
class A
{
...
@OneToMany()
@JoinColumn(name="A_ID")
/* B_ID should be the key in this map */
private Map map = new HashMap();
}
class B
{
@EmbeddedId
private CompoundId id;
}
@Embeddable
class CompoundId
{
@Column(name = "A_ID")
String aId;
@Column(name = "B_ID")
long bId
}
Я также попытался
@OneToMany()
@JoinColumn(name="A_ID", insertable=false, updatable=false)
@MapKeyColumn(name="B_ID")
private Map map = new HashMap();
Caused by: java.sql.SQLException: ORA-00904: "B1_"."ID": invalid identifier
не повезло
в отображении XML это выглядит следующим образом
<map name="map" inverse="true" cascade="all-delete-orphan" lazy="false">
<key>
<column name="A_ID" />
</key>
<map-key type="long" column="B_ID"/>
<one-to-many class="B" />
</map>
спящем 3.2.7.ga и аннотации 3.4.0 .GA
thx!
Я попытался это, как хорошо, но я получаю исключение SQL: «java.sql. SQLException: ORA-00972: идентификатор слишком длинный «Это означает, что что-то не так в сгенерированном SQL-заявлении, потому что имена не слишком длинны :) –
@OneToMany() @JoinColumn (name =" A_ID ", insertable = false, updatable = false) @MapKeyColumn (name = "B_ID"), сделал работу! и проблема оказалась в сопоставлении класса B. ура –