-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Einfaches mapping mit java.util.Map
PostPosted: Wed Oct 28, 2009 5:38 am 
Newbie

Joined: Tue Oct 27, 2009 12:20 pm
Posts: 4
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


Top
 Profile  
 
 Post subject: Re: Einfaches mapping mit java.util.Map
PostPosted: Wed Oct 28, 2009 9:50 am 
Newbie

Joined: Tue Oct 27, 2009 12:20 pm
Posts: 4
Konnte die Lösung selbst finden:

Im Parent:
Code:
    @CollectionOfElements()
      @JoinTable(name = "parent_child", joinColumns = { @JoinColumn(name = "parent_id") })
      @MapKey(columns = { @Column(name = "name") })
      @Column(name = "value")
    private Map<Integer, Child> fvalues = new HashMap<Integer, Child>();


Im Child kann die referenz zum Parent weggelassen werden.

Grüße,
HellCode


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.