Hallo zusammen,
ich habe hier ein kleines Problem:
In zwei Tabellen muss ich eine composite-id benutzen, da es sonst keinen unique key in der struktur gibt.
Die Klassen der Composite-Ids sind serialziable und überschreiben hashcode() und equals. Es funktioniert auch alles so, mein Problem bzw mein Wunsch wäre zu wissen:
Wie erhalte ich das entsprechende Object, wenn eine Composite-ID benutzt wird?
Der normale Weg ist ja: Session.get() oder Session.load()
Das scheint aber so nicht zu funktionieren.
Hier mal meine Mapping File:
Tbl01Id.java
Meine Frage geht das überhaupt? Oder ist etwas an der Tbl01Id Klasse falsch?
Danke fürs Lesen.
ich habe hier ein kleines Problem:
In zwei Tabellen muss ich eine composite-id benutzen, da es sonst keinen unique key in der struktur gibt.
Die Klassen der Composite-Ids sind serialziable und überschreiben hashcode() und equals. Es funktioniert auch alles so, mein Problem bzw mein Wunsch wäre zu wissen:
Wie erhalte ich das entsprechende Object, wenn eine Composite-ID benutzt wird?
Der normale Weg ist ja: Session.get() oder Session.load()
Das scheint aber so nicht zu funktionieren.
Hier mal meine Mapping File:
Java:
<composite-id name="tbl01Id" class="de.test.hibernate.Tbl01Id">
<key-property name="apfinr" type="int">
<column name="APFINR" length="7" />
</key-property>
<key-property name="aplfnr" type="int">
<column name="APLFNR" length="6" />
</key-property>
</composite-id>
<property name="aplkz" type="int">
<column name="APLKZ" precision="1" scale="0" />
</property>
....
Tbl01Id.java
Java:
public classTbl01Id implements Serializable {
private int id;
private int apfinr;
private int aplfnr;
public Tbl01Id() {
}
public Tbl01Id(int id, int apfinr, int aplfnr) {
this.apfinr = apfinr;
this.aplfnr = aplfnr;
this.id = id;
}
public int getApfinr() {
return this.apfinr;
}
public void setApfinr(int apfinr) {
this.apfinr = apfinr;
}
public int getAplfnr() {
return this.aplfnr;
}
public void setAplfnr(int aplfnr) {
this.aplfnr = aplfnr;
}
public int getId() {
return this.id;
}
public void setId() {
int i = apfinr + aplfnr;
id = i;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + apfinr;
result = prime * result + aplfnr;
result = prime * result + id;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Tbl01Id other = (Tbl01Id) obj;
if (apfinr != other.apfinr)
return false;
if (aplfnr != other.aplfnr)
return false;
if (id != other.id)
return false;
return true;
}
}
Meine Frage geht das überhaupt? Oder ist etwas an der Tbl01Id Klasse falsch?
Danke fürs Lesen.