-->
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.  [ 3 posts ] 
Author Message
 Post subject: Creteria gibt liefert zuviele Ergebnisse
PostPosted: Wed Feb 21, 2007 12:53 pm 
Newbie

Joined: Wed Feb 21, 2007 12:30 pm
Posts: 3
Hallo,

ich arbeite mich gerade in JPA und Hibernate ein. Nun habe ich ein Problem.
Ich habe 2 Klassen, diese Klassen (K1 und K2) haben eine bidirektionale OneToMany Beziehung. Mit anderen Worten K1 hat eine Liste von K2.
Jetzt erstelle ich eine Beispiel K1 Objekt und möchte das für queryByExample verwenden. In der Datenbank habe ich einen K1 Eintrag. Wenn nur ein K2 Eintrag in der Datenbank ist, dann funktioniert alles Wunderbar. Sobald mehrere K2 Einträge vorhanden sind, bekomme ich für jeden K2 Eintrag ein K1 Objekt.
Mein code sieht so aus:
Code:
@Entity
public class K1 implements java.io.Serializable {
   
    @Id
    @GeneratedValue (strategy = GenerationType.AUTO)
    private Long id;
   
    private String text1;
   
    private String text2;

    @OneToMany(cascade=CascadeType.ALL,mappedBy ="kk1",fetch=FetchType.EAGER)   
    private List<K2> k2s = new ArrayList<K2>();
   ....
}

@Entity()
public class K2 implements Serializable{

    @ManyToOne
    @JoinTable (name="K1_TO_K2")   
    private K1 kk1;

}


Für die Abfrage nutze ich folgende Funktion:

Code:
public List<K1> findByExample(K1 k1){
        EntityManager em = super.getEntityManager();
        List<K1> k1s = null;
        try {
            Session session = (Session) em.getDelegate();           
            Example exampleK1 = Example.create (k1);
            users = session.createCriteria(K1.class)
            .add(exampleK1)
            .list();                       
        } catch (Exception e) {
            e.printStackTrace();
            em.getTransaction().rollback();
        }
        return k1s;
    }


Weiß jemand woran das liegt?


gruß
docci


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 21, 2007 1:48 pm 
Hibernate Team
Hibernate Team

Joined: Mon Aug 25, 2003 9:11 pm
Posts: 4592
Location: Switzerland
FAQ

_________________
JAVA PERSISTENCE WITH HIBERNATE
http://jpwh.org
Get the book, training, and consulting for your Hibernate team.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 21, 2007 2:53 pm 
Newbie

Joined: Wed Feb 21, 2007 12:30 pm
Posts: 3
ahh okay...
hatte das Zauberwort Distinct bei meiner Suche vergessen.
Einfach nach dem .list()

Code:
ResultTransformer transformer = new DistinctRootEntityResultTransformer();
            k1s = transformer.transformList (k1s);

hinzufügen.

Quelle:http://www.hibernate.org/117.html#A12


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 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.