Person.java:
public class Person implements java.io.Serializable {
private int id;
private String fullName;
public Person() {
}
public Person(int id, String fullName) {
this.id = id;
this.fullName = fullName;
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
}
ProjectGroup.java:
public class ProjectGroup implements java.io.Serializable {
private int id;
private Set<Person> persons = new HashSet<Person>(0);
private String name;
/**
* Get the value of name
*
* @return the value of name
*/
public String getName() {
return name;
}
/**
* Set the value of name
*
* @param name new value of name
*/
public void setName(String name) {
this.name = name;
}
public ProjectGroup() {
}
public ProjectGroup(int id, String name, Set<Person> persons) {
this.id = id;
this.name = name;
this.persons = persons;
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public Set<Person> getPersons() {
return this.persons;
}
public void setPersons(Set<Person> persons) {
this.persons = persons;
}
}
Person.hbm.xml:
<hibernate-mapping>
<class name="com.mycompany.Person" table="person" schema="public">
<id name="id" type="int">
<column name="id" />
<generator class="identity" />
</id>
<property name="fullName" type="string">
<column name="full_name" length="128" not-null="true" />
</property>
<set name="projectGroups" inverse="false" lazy="false" cascade="delete" table="group_person">
<key>
<column name="project_id" />
</key>
<many-to-many entity-name="com.mycompany.ProjectGroup">
<column name="group_id" />
</many-to-many>
</set>
</class>
</hibernate-mapping>
ProjectGroup.hbm.xml:
<hibernate-mapping>
<class name="com.mycompany.ProjectGroup" table="project_group" schema="public">
<id name="id" type="int">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="32" not-null="true" />
</property>
<set name="persons" inverse="false" table="group_person">
<key>
<column name="group_id" />
</key>
<many-to-many entity-name="com.mycompany.Person">
<column name="project_id" />
</many-to-many>
</set>
</class>
</hibernate-mapping>
What I need to do is load all users with a particular group. I know how to do that with SQL, but the Hibernate equivalent eludes me.
First of all, add to your
Personclass, propertyprojectGroupsdeclared in yourPerson.hbn.xml. Afterwards, use this criteria to select all users of certain group:Or this HQL: