In Hibernate mit OneToMany Beziehungen arbeiten
Posted by jogep on 28 Jul 2008 | Tagged as: hibernate, java, spring
Bei einer Java Anwendung die mit Hibernate oder JPA als Persistence Framework arbeitet, kann es vorkommen das man alle Objekte mit HQL ermitteln will deren OneToMany Beziehungen eine bestimmte Größe haben oder mehr als null Elemente beinhalten.
Eine Beispiel Definition unserer Klassen könnte in etwa so aussehen.
MyObject:
MySubObject:
Nach dem wir unsere Klassen mit Annotations oder auch XML definiert haben können wir jetzt in unserem DAO Objekt mit folgenden HQL Befehl alle Objekte von der Datenbank anfordern die mindestens ein Element im Set subObjects haben.
@Entity @Table(name = "my_object", schema = "public") public class MyObject implements java.io.Serializable { private Set<mysubobject> subObjects = new HashSet</mysubobject><mysubobject>(0); @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "myobject") public Set</mysubobject><mysubobject> getSubObjects() { return this.subObjects; } } </mysubobject>
@Entity @Table(name = "my_sub_object", schema = "public") public class MySubObject implements java.io.Serializable { private MyObject myObject; @ManyToOne(cascade = {}, fetch = FetchType.LAZY) @JoinColumn(name = "myobject", unique = false) public MyObject getMyObject() { return this.myObject; } }
public List<myobject> findAllWithElements() { try { String queryString = "select model from MyObject model where size(subObjects ) > 0"; return getHibernateTemplate().find(queryString); } catch (RuntimeException re) { log.error("find all with elements failed", re); throw re; } } </myobject>
No Comments »
Twitter
Facebook
Github
Xing
LinkedIn