1、实体
package per.jerry.hibernate.ManyManySingleRel;
public class TrainStudent {
public int id;
private String name;
private int age;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
}
package per.jerry.hibernate.ManyManySingleRel;
import java.util.HashSet;
import java.util.Set;
public class TrainTeacher {
public int id;
private String name;
private int age;
private Set<TrainStudent> studentSet = new HashSet();
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the studentSet
*/
public Set<TrainStudent> getStudentSet() {
return studentSet;
}
/**
* @param studentSet the studentSet to set
*/
public void setStudentSet(Set<TrainStudent> studentSet) {
this.studentSet = studentSet;
}
}
2、配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="per.jerry.hibernate.ManyManySingleRel.TrainStudent" table="J_TRAIN_STUDENT">
<id name="id" type="int">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="age" type="int">
<column name="AGE" />
</property>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="per.jerry.hibernate.ManyManySingleRel.TrainTeacher" table="J_TRAIN_TEACHER">
<id name="id" type="int">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="age" type="int">
<column name="AGE" />
</property>
<set name="studentSet" table="J_TEACHER_STUDENT_REL" outer-join="true" cascade="save-update">
<key>
<column name="TEACHER_ID" />
</key>
<many-to-many class="per.jerry.hibernate.ManyManySingleRel.TrainStudent" column="STUDENT_ID"/>
</set>
</class>
</hibernate-mapping>
3、测试类
package per.jerry.hibernate.ManyManySingleRel;
import static org.junit.Assert.*;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import per.jerry.hibernate.ManyManyBothRel.Role;
import per.jerry.hibernate.ManyManyBothRel.User;
public class TestMMSR {
Session session ;
@Before
public void before(){
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
session = sessionFactory.getCurrentSession();
session.beginTransaction();
}
@After
public void after(){
session.getTransaction().commit();
}
@Test
public void testQuery(){
String hql = "select t,s from TrainTeacher t join t.studentSet s where t.name='刘瑜'";
List list = session.createQuery(hql).list();
for(int i =0; i < list.size(); i++){
Object[] tmp = (Object[])list.get(i);
TrainTeacher u = (TrainTeacher)tmp[0];
TrainStudent r = (TrainStudent)tmp[1];
System.out.println("----------->"+u.getName());
System.out.println("------------->"+r.getName());
}
}
public void test() {
TrainTeacher t = new TrainTeacher();
t.setAge(43);
t.setName("Jerry");
TrainTeacher t2 = new TrainTeacher();
t2.setAge(44);
t2.setName("kobe");
TrainStudent s1 = new TrainStudent();
s1.setAge(23);
s1.setName("Jimmy");
TrainStudent s2 = new TrainStudent();
s2.setAge(22);
s2.setName("James");
t.getStudentSet().add(s2);
t.getStudentSet().add(s1);
t2.getStudentSet().add(s2);
t2.getStudentSet().add(s1);
session.save(t);
session.save(t2);
}
}