Java代码
public class Many2One {
public static void main(String[] args) {
Department depart = add();
Department department = queryDepart(depart.getId());
}
static Department queryDepart(int departId) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
Department depart = (Department) s.get(Department.class, departId);
System.out.println("emps:" + depart.getEmps());
tx.commit();
return depart;
} finally {
if (s != null)
s.close();
}
}
static Department add() {
Session s = null;
Transaction tx = null;
try {
Department depart = new Department();
depart.setName("department name");
Employee employee1 = new Employee();
employee1.setName("employee1 name1");
Employee employee2 = new Employee();
employee2.setName("employee2 name2");
List<Employee> list= new ArrayList<Employee>();
list.add(employee1); //1
list.add(employee2); //2
depart.setEmps(list);
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.save(depart);
s.save(employee1);
s.save(employee2);
tx.commit();
return depart;
} finally {
if (s != null)
s.close();
}
}
}
public class Many2One {
public static void main(String[] args) {
Department depart = add();
Department department = queryDepart(depart.getId());
}
static Department queryDepart(int departId) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
Department depart = (Department) s.get(Department.class, departId);
System.out.println("emps:" + depart.getEmps());
tx.commit();
return depart;
} finally {
if (s != null)
s.close();
}
}
static Department add() {
Session s = null;
Transaction tx = null;
try {
Department depart = new Department();
depart.setName("department name");
Employee employee1 = new Employee();
employee1.setName("employee1 name1");
Employee employee2 = new Employee();
employee2.setName("employee2 name2");
List<Employee> list= new ArrayList<Employee>();
list.add(employee1); //1
list.add(employee2); //2
depart.setEmps(list);
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.save(depart);
s.save(employee1);
s.save(employee2);
tx.commit();
return depart;
} finally {
if (s != null)
s.close();
}
}
}
执行测试类,控制台打印如下信息:
emps:[id=1 name=employee1 name1, id=2 name=employee2 name2]
将测试类中注释为1和注释为2的语句对换顺序后,重新执行,控制台打印如下信息:
emps:[id=2 name=employee2 name2, id=1 name=employee1 name1]
再看数据库表中的记录,如下所示:
mysql> select * from department;
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | department name |
+----+-----------------+
1 row in set (0.00 sec)
mysql> select * from employee;
+----+-----------------+-----------+-----------+
| id | name | depart_id | order_col |
+----+-----------------+-----------+-----------+
| 1 | employee1 name1 | 1 | 1 |
| 2 | employee2 name2 | 1 | 0 |
+----+-----------------+-----------+-----------+
2 rows in set (0.00 sec)
说明使用List时,因为配置文件下增加了<list-index column="order_col" />对加入List集合的元素的顺序进行记录,测试结果表明,确实对加入顺序进行了记录。