Salut les gars Je Migrer une application à l'aide de mise en veille prolongée xml aux annotations JPA. Actuellement, je suis coincé sur la cartographie d'une carte d'objets avec l'ID composé en utilisant des annotations Voilà comment j'essaie de le faire.Cartographie d'une collection de cartes avec annotations 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
}
J'ai aussi essayé
@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
sans chance
en XML mapping il ressemble à ce
<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>
mise en veille prolongée 3.2.7.ga et annotations 3.4.0 .GA
thx!
J'ai essayé cela aussi, mais je reçois exception SQL: « java.sql. SQLException: ORA-00972: identifiant est trop long » ce qui signifie que quelque chose ne va pas dans le produit instruction SQL, cause les noms ne sont pas trop long :) –
@OneToMany() @JoinColumn (name = "A_ID", insérable = false, updatable = false) @MapKeyColumn (name = "B_ID"), a fonctionné! et le problème semblait être dans la cartographie de la classe B. À votre santé –