LÖSUNG FÜR DAS ERSTE PROBLEM HABE ICH SELBST GEFUNDEN UND STEHT WEITER UNTEN. HABE JETZT ABER NOCH EIN PROBLEM BEI DER ONETOMANY-BEZIEHUNG.
Vorab, wollte ich mich erstmal bei allen bedanken, die sich meinen Problemen gewidmet haben. Ist echt ein tolles Forum hier!
Bei der Umstellung von XDoclets auf Annotations habe ich jetzt jedoch noch 2 Probleme. Dann habe ich (hoffentlich) alles geschafft :-)
Ich werde in naher Zukunft auch weiterhin das Forum besuchen, vielleicht kann ich ja auch noch jemanden helfen ;-)
Nun zu meinem Problem:
Ich muss folgende XDoclet-Sprache übersetzen:
/**
* @hibernate.list table="PERSON_ADRESSE" cascade="none"
* access="field"
* @hibernate.collection-many-to-many column="FK_ADRESSE"
* class="XYZ"
* @hibernate.collection-key column="FK_PERSON"
* @hibernate.collection-index column="SORT_INDEX"
*/
Mit anderen Worten: Es existiert eine unidirektionale ManyToMany Beziehung zu der Klasse XYZ. Diese Beziehung soll aufgelöst werden, indem eine neue Tabelle ("PERSON_ADRESSE") erstellt wird, die 2 Fremdschlüssel besitzt ("FK_ADRESSE" und "FK_PERSON"), sowie eine Index-Column ("SORT_INDEX")
Das auflösen der ManyToMany-Beziehung bekomme ich ohne Probleme hin. Das würde folgendermaßen aussehen. Habe es an einem einfachen Beispiel gemacht (siehe weiter unten).
Die Tabelle "PERSON_ADRESSE" soll also 3 Spalten haben.
FK_ADRESSE, FK_PERSON und SORT_INDEX
Aber wie bekomme ich das mit der Index-Column hin?
Habe schon folgendes probiert:
@ManyToMany(targetEntity=XYZ.class)
@AccessType("field")
@JoinTable(name="PERSON_ADRESSE",
joinColumns=@JoinColumn(name="PERSON_FK"),
inverseJoinColumns=@JoinColumn(name="ADRESSE_FK"))
@Index(name="SORT_INDEX")
Collection<Adresse> adressen;
@ManyToMany(targetEntity=XYZ.class)
@AccessType("field")
@JoinTable(name="PERSON_ADRESSE",
joinColumns=@JoinColumn(name="PERSON_FK"),
inverseJoinColumns=@JoinColumn(name="ADRESSE_FK"))
@IndexColumn(name = "SORT_INDEX")
Collection<Adresse> adressen;
Aber da generiert er mir nichts :-(
Weiß jemand wie das funktioniert?
Klasse Person
@Entity
@Table(name = "PERSON")
public class Person {
@Id
@Column(name = "PK_ID")
int id;
@Column(name = "VORNAME")
String vorname;
@Column(name = "NACHNAME")
String nachname;
@ManyToMany(targetEntity=XYZ.class) @AccessType("field") @JoinTable(name="PERSON_ADRESSE", joinColumns=@JoinColumn(name="PERSON_FK"), inverseJoinColumns=@JoinColumn(name="ADRESSE_FK")) Collection<Adresse> adressen;
public Collection<Adresse> getAdressen() {
return adressen;
}
public void setAdressen(Collection<Adresse> adressen) {
this.adressen = adressen;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNachname() {
return nachname;
}
public void setNachname(String nachname) {
this.nachname = nachname;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
}
Klasse Adresse
@Entity
@Table(name = "ADRESSE")
public class Adresse {
@Id
@Column(name = "ID")
int id;
@Column(name = "STRASSE")
String strasse;
@Column(name = "HAUSNUMMER")
String hausnummer;
@Column(name = "PLZ")
int plz;
public String getHausnummer() {
return hausnummer;
}
public void setHausnummer(String hausnummer) {
this.hausnummer = hausnummer;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPlz() {
return plz;
}
public void setPlz(int plz) {
this.plz = plz;
}
public String getStrasse() {
return strasse;
}
public void setStrasse(String strasse) {
this.strasse = strasse;
}
}
Ein ähnliches Problem habe ich übrigens bei folgendem XDoclet-Tag:
/**
* @hibernate.collection-one-to-many class="XYZ"
* @hibernate.collection-key
* @hibernate.collection-key-column name="FK_HISTORIE"
* @hibernate.collection-index column="SORT_INDEX"
*/
Aber ich denke das ähnelt dem obigen Problem.
Last edited by ak4784 on Tue Aug 21, 2007 7:18 am, edited 1 time in total.
|