LifeNote
导航
BlogJava
首页
新随笔
联系
聚合
管理
统计
随笔 - 47
文章 - 1
评论 - 105
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
(120)
Hibernate(19)
(rss)
Java(28)
(rss)
Javascript(16)
(rss)
Mysql(4)
(rss)
Oracle(3)
(rss)
Others(5)
(rss)
Spring(18)
(rss)
struts(11)
(rss)
Tapestry(8)
(rss)
tomcat(8)
(rss)
随笔档案
(47)
2008年5月 (1)
2008年4月 (4)
2008年3月 (7)
2008年2月 (2)
2008年1月 (7)
2007年12月 (26)
文章档案
(1)
2007年12月 (1)
相册
my photo
技术联接
Hibernate3提供了DetachedCriteria
Ajax in action
beansoft
freewebblogger
jajala
javascript framework
JQuery
oksonic
teacher .li
yourjava
强烈推荐学习
报表软件
花钱的年华
积分与排名
积分 - 148093
排名 - 419
最新评论
1. re: Hibernate中Criteria的完整用法
好东西!
--Java部落
2. re: Hibernate中Criteria的完整用法
傻b
--到底
3. re: Eclipse下的Java反编译插件:Jode Decompiler
@bangbang
请问,在jdk几下能用啊?
--mengfei
4. re: 一个免费的空间
fghfgh
--lijunliang
5. re: Hibernate中Criteria的完整用法 [未登录]
抄文档的2B,你TM有病吧
--123
阅读排行榜
1. Hibernate中Criteria的完整用法 (46713)
2. 解决Eclipse启动错误 jvm terminated. exit code 1(10772)
3. Eclipse下的Java反编译插件:Jode Decompiler(7615)
4. Java数据库操作基本流程(6022)
5. Javascript----文件操作(5513)
评论排行榜
1. 一个免费的空间(11)
2. Spring整合Hibernate 莫名其妙的错误 (11)
3. Eclipse下的Java反编译插件:Jode Decompiler(9)
4. Hibernate中Criteria的完整用法 (7)
5. 封装了一个hibernate 整合spring 的dao对象(7)
Spring整合Hibernate 莫名其妙的错误
今天写了个程序 Spring整合Hibernate 使用Spring中的HibernateTemplate 通过配置程序可以运行起来 并可以操作数据库 但程序执行过程中会有异常 不知道是什么错误 一下是程序执行的异常
Hibernate: insert into test.student (STUNAME, AGE, SEX, PHONE) values (
?
,
?
,
?
,
?
)
java.lang.RuntimeException
at com.stu.server.StudentServer.addStudentByCondition(StudentServer.java:
30
)
at com.stu.server.StudentServer$$FastClassByCGLIB$$8fef4d1a.invoke(
<
generated
>
)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:
149
)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:
696
)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
149
)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:
106
)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171
)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:
631
)
at com.stu.server.StudentServer$$EnhancerByCGLIB$$f5f4d830.addStudentByCondition(
<
generated
>
)
at com.stu.test.Test.main(Test.java:
33
)
Hibernate: update test.student set STUNAME
=?
, AGE
=?
, SEX
=?
, PHONE
=?
where ID
=?
还麻烦各位帮忙指点一下 程序我上传上来了,另外还请哪个大哥帮忙指出这程序的不足之处
程序下载地址:
http://www.blogjava.net/Files/lifenote/HibernateInSpring.rar
posted on 2007-12-07 10:20
LifeNote
阅读(1782)
评论(11)
编辑
收藏
所属分类:
Java
、
Hibernate
、
Spring
Comments
#
re: Spring整合Hibernate 莫名其妙的错误
LifeNote
Posted @ 2007-12-07 11:12
我知道异常了 我使用的是spring的声明事务 当年龄小于30的时候就抛异常并且回滚事务 可现在并没有回滚 还麻烦个位看看 多谢
getStudentDAO().save(stu);
stu.setAge( stu.getAge()+10);
if(stu.getAge()<30){ //这里抛个异常就回滚了 不用rollback了
throw new RuntimeException();
}
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误 [未登录]
flustar
Posted @ 2007-12-07 11:28
建议你把hbm文件中的 catalog="test" 去掉 另外你的hibernate.cfg.xml是多余的
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
Tiger F
Posted @ 2007-12-07 11:32
两个问题:
既然使用了spring的声明事物,就不应该再自己声明事物了。spring的声明事物就是检查是否有异常出现来决定最后是提交还是回滚的,所以必须使用异常。
所以你的server程序应该写为:(似乎根本不需要回滚)
public void addStudentByCondition(Student stu){
if(stu.getAge()>=30)
getStudentDAO().save(stu);
}
如果因为有其他逻辑需要回滚的话,应该这样:
public void addStudentByCondition(Student stu){
if(stu.getAge()<30)
throw new MyBizException(); // 建议自定义一个有业务意义的异常
getStudentDAO().save(stu);
}
另一个问题,你的Dao类在使用templage方法是都自己做了异常处理,但是你的异常处理无实质内容,这个做法会影响到事物的。如果你不知道应该如何处理这些异常,最好就是不要管他。
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
LifeNote
Posted @ 2007-12-07 11:34
catalog="test" 这个只是数据库的名字啊
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
LifeNote
Posted @ 2007-12-07 11:38
既然我在
if(stu.getAge()<30){ //这里抛个异常就回滚了 不用rollback了
throw new RuntimeException();
}这里抛了异常为什么程序还是没有回滚呢
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
Tiger F
Posted @ 2007-12-07 14:41
如果你的程序还是原来那个样子,虽然抛出了异常也是被你自己捕获了,并没有被spring捕获到。
spring既然不知道发生了异常,当然不会回滚事物了。
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
LifeNote
Posted @ 2007-12-07 16:28
请问那要如何处理事务呢 我有些糊涂了 麻烦 把那程序修改后把代码贴上来 好么 十分感谢 学习中
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
Tiger F
Posted @ 2007-12-07 16:30
我贴了呀,上面。只要把addStudentByCondition函数的实现完整替换一下,至少是能回滚了。
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
LifeNote
Posted @ 2007-12-07 16:35
您是说
if(stu.getAge()<30)
throw new MyBizException(); // 建议自定义一个有业务意义的异常
getStudentDAO().save(stu);
}
这里new MyBizException(); 是自己捕获了么 ?
那这样和你说的 这个:
虽然抛出了异常也是被你自己捕获了,并没有被spring捕获到。
spring既然不知道发生了异常,当然不会回滚事物了。
也没有被spring知道啊 如何回滚呢
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
Tiger F
Posted @ 2007-12-07 16:59
public void addStudentByCondition(Student stu){
if(stu.getAge()<30)
throw new MyBizException(); // 可以用RuntimeException替换
getStudentDAO().save(stu);
}
注意,整个addStudentByCondition函数应该就这几行,而不是修改这三行。
把你的try/catch之类的统统删除。
回复
更多评论
#
re: Spring整合Hibernate 莫名其妙的错误
LifeNote
Posted @ 2007-12-07 17:02
哦 明白你的意思了 十分感谢!!!
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
Java数据库操作基本流程
使用动态代理实现用AOP对数据库进行操作
如何获得鼠标的当前位置
Javascript----文件操作
两种特殊的java容器类list和set分析
《J2EE核心模式》(DAO模式)
JSF中文输入乱码问题解决方法
Tomcat,Weblogic 等服务器 SSL 安全登陆的例子---附证书文件生成器
一个Struts的上传下载文件的程序
java.lang.OutOfMemoryError 的解决办法