<property name="connection.autocommit">true</property>这个属性,如果有且值为true,那是你的方法和其他配置问题了。
如果没这个属性,它的默认值是false;所以不管你是session.flush(),还是session.close()都是没用的,还是插入不了数据,原因是最后没有提交到数据库,这时候只能通过事务才可以插入更新成功。失败的根本原因就是没设置这个属性,加上这个属性并设置它的值为true,再试试你的方法,应该没错了。
Target t = new Target("tid1", "999", ......);
Session session = HibernateSessionFactory.getSession();
session.save(t)
//session.flush();or sesson.close(); or session.clear();
上面的方法可以写一个,也可以一个不写。
如果设置了connection.autocommit为true,上面的代码是可以插入删除更新数据的,如果没有设置那就是默认为false了,上面的方法是不行的。
下面的方法不管connection.autocommit怎么设置,都可以完成插入、更新、删除等操作。
Target t = new Target("tid1", "999", ......);
Session session = HibernateSessionFactory.getSession();
Transaction transaction = session.beginTransaction();
transaction.begin();
session.save(t);
//session.flush();//or session.close();可以写,也可以不写
transaction.commit();