Hallo Alle zusammen!
Ich bin neu in diesem Forum und auch newbie in hibernate, aber ich konnte schon eine Menge Fragen mit Hilfe dieses Forums lösen, oder auch selber herausfinden.
Aber ein Problem bleibt: Ich habe es bisher nicht geschafft, hibernate dazu zu bringen eine simple Map<Integer,CustomClass>-Relation in die Datenbank zu schreiben. Ich denke, dass es für einen etwas erfahreneren Hibernate-Benutzer einfach sein muss, dies zu lösen.
Hier erstmal mein Code:
Code:
@Entity
public class Parent implements Serializable{
@Id
@GeneratedValue
private Long id;
@OneToMany(cascade=CascadeType.ALL)
@Cascade ({org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
@MapKey(name="parent_ref")
private Map<Integer, Child> fvalues = new HashMap<Integer, Child>();
public void setChild(int ref, Child child) {
fvalues.put(ref, child);
}
}
Code:
@Entity
public class Child implements Serializable {
@Id
@GeneratedValue
private Long id;
public Integer parent_ref;
}
Alles was ich will ist das Child in eine Map zu schreiben, welche dem Parent gehört. Der Code compiliert, Tomcat deployt das Projekt und die Datenbank wird ohne Probleme erstellt. Ich führe mit diesem Code einen Testcase aus:
Code:
Parent p = new Parent();
Child c = new Child();
p.setChild(5,c);
em.persist(p);
es wird nur das Value (also das Child) in die Datenbank geschrieben, aber nicht der key. Das Key-Feld bleibt leer aus irgendwelchen Gründen. Ich hab schon alle möglichen verschiedenen Kombinationen von Annotationen versucht, aber bisher erfolglos. Die Childs werden zwar in die Datenbank geschrieben, aber die Key-Felder (vom typ Integer) bleiben immer 0, obwohl es ja in diesem Fall 5 sein müsste (von p.setChild(5,c);). Hat jemand eine Idee ?
Für alle Vorschläge bin ich sehr dankbar!
Grüße,
HellCode