Hibernate问题记录

来源:互联网 发布:淘宝开个人食品店 编辑:程序博客网 时间:2024/06/08 18:21

使用hibernate遇到一些问题,罗列出来作为札记备忘。

1.遇到了如下的错误信息:[ERROR,Dispatcher] Exception occurred during processing request: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Transaction not successfully started ……

org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Transaction not successfully started原因:这个错误的产生是因为我在保存entity后提交事务用的session.getTransaction().commit()语句,session.getTransaction()只是根据session获得一个Transaction实例,但是并没有启动它,所以它会告诉你“Transaction启动失败”(Transaction not successfully started)

解决方法:应该用session.beginTransaction()代替session.getTransaction(),session.beginTransaction()方法在获得一个Transaction后调用其begin()方法,如果是请求创建一个新的“受控”Transaction,则启动这个Transaction,否则就直接使用已经存在的“受控”Transaction来完成工作。(http://blog.csdn.net/iamhades/article/details/1762447)

2、org.hibernate.TransactionException: nested transactions not supported
原因:在写事务的时候只用了,tx = session.beginTransaction();//获取事务,并没有: tx.begin();//开启事务.
解决:增加:tx.begin();//开启事务。(http://bbs.csdn.net/topics/390284902)

3、hibernate检索时遇到了如下问题:org.hibernate.hql.internal.ast.QuerySyntaxException: XX(表名) is not mapped []
原因:
DAO中实现为:
String hql = "from User where UserName = '"+username+"'";
Query query = session.createQuery(hql);  
user = (User) query.uniqueResult();  
重色的User是实体类的意思,并不是数据表名。
解决:修改重色地方为具体实体类,String hql = "from @entity where UserName = '"+username+"'";

4、jsp页面调用DAO会报如下空指针异常:java.lang.NullPointerException at com.xxx.xxx.impl.UserServiceImpl.findUserByUserName(UserServiceImpl.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
目前没解决,求解!


 


 


http://blog.csdn.net/lzwglory/article/details/16330589

0 0
原创粉丝点击