struts中使用JTA无法对hibernate进行保存,高手指点

wzs 2005-04-27 06:25:11
我在struts的Action(EJB的sessionbean也一样)中对做事务处理时无法保存代码如下,代码没有错,
只是无法提交,后来我用hibernate中自己的session事务可以成功,不知道为何
===================================================================================
try
{
InitialContext ic=new InitialContext();
UserTransaction ut = (UserTransaction) ic.lookup("java:comp/UserTransaction");
Tsysresourceright tsr=new Tsysresourceright();
String resourcename="testresourcename";
String actionkey="testactionkey";
String upname="testupname";
String upid="999999";
String url="testurl";
tsr.setResourceid(new Integer("34556"));
tsr.setUrl(url);
tsr.setActionkey(actionkey);
tsr.setResourcename(resourcename);
tsr.setUpid(new Integer(upid));
tsr.setUpname(upname);
tsr.setNodetype(new Integer(SystemConst.NODETYPE_FUNCTION));
tsr.setActiveno(new Integer(1));
tsr.setCountryid(new Integer("99999"));


Tsysresourceright tsr1=new Tsysresourceright();
resourcename="testresourcename1";
upname="testupname1";
upid="999999";
url="testurl1";
tsr1.setResourceid(new Integer("325566"));
tsr1.setUrl(url);
tsr1.setActionkey(actionkey+"dd");
tsr1.setResourcename(resourcename);
tsr1.setUpid(new Integer(upid));
tsr1.setUpname(upname);
tsr1.setNodetype(new Integer(SystemConst.NODETYPE_FUNCTION));
tsr1.setActiveno(new Integer(1));
tsr1.setCountryid(new Integer("99999"));


TsysresourcerightDao tsrd=new TsysresourcerightDao();
ut.begin();
// tsrd.insert(tsr);
// tsrd.insert(tsr1);

Configuration cfg = new Configuration()
.addClass(Tsysresourceright.class);
SessionFactory sf = cfg.buildSessionFactory();
Session s=sf.openSession();
// net.sf.hibernate.Transaction tx=s.beginTransaction();
s.save(tsr);
s.flush();
s.save(tsr1);
s.flush();
s.close();
// tx.commit();


ut.commit();
}
catch (Exception ex)
{
ex.printStackTrace();
}
...全文
99 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzs 2005-05-08
  • 打赏
  • 举报
回复
zhutouzip(Speak out!-shyboy):
===========================================
s.close();
tx.commit();//这句是注释掉的老大
======================================
我用的是UserTransaction的commit()按次序来说ut.commit()是跟hibernate中的session的commit()是不一样的,你说的这种方法我也试了不行,实在是郁闷
飞行的兔子 2005-04-29
  • 打赏
  • 举报
回复
s.close();
tx.commit();
这两个的顺序换一下!
wzs 2005-04-29
  • 打赏
  • 举报
回复
怎么没人回答啊
wzs 2005-04-28
  • 打赏
  • 举报
回复
怎么没人回答啊,郁闷死了搞了一整天就是不知道为啥
wzs 2005-04-27
  • 打赏
  • 举报
回复
kaymo:还是一样啊不行
kaymo 2005-04-27
  • 打赏
  • 举报
回复
<property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">javax.transaction.UserTransaction</property>
指定用jta事务

sessionbean设置事务required,不用显示写事务代码
MARS.nEIL 2005-04-27
  • 打赏
  • 举报
回复
学习..不熟.帮顶.

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧