配置文件中属性hibernate.hbm2ddl.auto设置为create,在调用add()方法的时候,能正确插入数据,为什么调用query方法的时候会出现空指针异常,而且查询完毕后,数据库中表的内容被清空
请大家帮兄弟看看,感激不尽!
Hibernate.cfg.xml:
<property name="hibernate.hbm2ddl.auto">create</property>
执行代码:
public static void main(String[] args) {
add();
query(2);
}
static void add() {
Session s = null;
Transaction tx = null;
Department depart = new Department();
depart.setName("depart");
Set<Employee> emps = new HashSet<Employee>();
Employee emp1 = new Employee();
emp1.setDepart(depart);
emp1.setName("emp1");
emp1.setBirthday(new Date());
Skill skiller1 = new Skill();
skiller1.setDepart(depart);
skiller1.setSkill("skill");
skiller1.setName("skiller1");
Saler saler = new Saler();
saler.setDepart(depart);
saler.setSale(100);
saler.setName("saler");
emps.add(emp1);
emps.add(skiller1);
emps.add(saler);
depart.setEmps(emps);
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.save(depart);
s.save(emp1);
s.save(skiller1);
s.save(saler);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (s != null) {
s.close();
}
}
}
static Employee query(int id) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
Employee emp = (Employee)s.get(Employee.class, id);
System.out.println(emp.getClass());
tx.commit();
return emp;
} finally {
if (s != null) {
s.close();
}
}
}