frisk_zhou 2009-06-16 12:29
浏览 224
已采纳

帮我看一下Spring和Hibernate的集成问题

配置如下,hibernate.cfg.xml就不给出来了,那个是正确的。
[code="java"]

classpath:hibernate.cfg.xml


<!-- 配置事务管理器-->





<!-- 配置事务时传播特性-->

tx:attributes








/tx:attributes
/tx:advice
aop:config


/aop:config

[/code]
帮我看看以上的配置,是否正确,因为我在查其他的数据都还好,
但是我这里执行了下面这一段
[code="java"]TModule t=(TModule) this.getHibernateTemplate().get(TModule.class, Long.valueOf(id));
t.setName(nodeName);
t.setOrderNum(Integer.valueOf(order));

this.getHibernateTemplate().saveOrUpdate(t);[/code] 以后,
用户点击按钮,执行
Criteria cr=this.getSession().createCriteria(TModule.class);
List tmlist=cr.list();
在执行cr.list()那里要等很久很久,然后timeout了,
不知道哪里的原因,帮我分析一下。谢谢!

[b]问题补充:[/b]
cr.list()一直没反应,我把hibernate生成的sql语句在sql2008里执行,没反应,后来我一关掉myeclipse,结果出来了,但结果是没有更新之前的数据。很奇怪了
[b]问题补充:[/b]
用Hql还是不行。
[code="java"]String hql="from TModule t where t.moduledId="+Long.valueOf(pid)+" Order by t.orderNum asc";
List tmlist=this.getSession().createQuery(hql).list();[/code]
Try Catch但又没有报错。不知道怎么回事!而且很很久候才查出数据出来,觉得很奇怪!

[b]问题补充:[/b]
to lovewhzlq ;
但是这个事情是发生在
[code="java"]TModule t=(TModule) this.getHibernateTemplate().get(TModule.class, Long.valueOf(id));

t.setName(nodeName);

t.setOrderNum(Integer.valueOf(order));

this.getHibernateTemplate().saveOrUpdate(t); [/code]
之后,其他的情况下没有发生,所以我怀疑是不是我的配置错误。如果配置正确,那又是什么错误呢?

[b]问题补充:[/b]
其他的保存后也出问题了。请问什么回事!
[b]问题补充:[/b]
[现在我突然想起一个事情,是不是我那个
[code="java"]TModule t=(TModule) this.getHibernateTemplate().get(TModule.class, Long.valueOf(id));

t.setName(nodeName);

t.setOrderNum(Integer.valueOf(order));

this.getHibernateTemplate().saveOrUpdate(t);[/code]
这个有问题,我的这个TModule表是一个树形的,

[code="java"]public class TModule implements java.io.Serializable {
private Long id;
private TModule TModule;
private String name;
private String url;
private Short isLeaf;
private Integer orderNum;
private Long moduledId; //这个是ID,指向父节点的Id,
private Set TModules = new HashSet(0);
}[/code]

这个有问题吗?我保存的时候没有赋值。
[b]问题补充:[/b]
有人说 可能是阻塞的原因,但是我如何解决呢?
[b]问题补充:[/b]
现在可以保存了,而且生成了sql语句

Hibernate: insert into whirlpool.dbo.t_module (name, url, isLeaf, orderNum, moduledId) values (?, ?, ?, ?, ?)
但我在保存后,去数据库里查,可查询分析器显示一直在查,可是没结果!
[b]问题补充:[/b]
事情越来越明了。
我现在的问题是保存了,也更新了,
比如我这个

[code="java"]
//这个方法用来添加一个Tmodule
TModule t=new TModule();
t.setName(nodeName);
this.getHibernateTemplate().saveOrUpdate(t);
System.out.println(t.getId()); //打印出来了,比如现在数据库中最大的ID为30,加1后ID为31.
[/code]
但是很快就被rollback.请问怎么回事啊?!

  • 写回答

6条回答 默认 最新

  • wanghaolovezlq 2009-06-16 13:37
    关注

    你没提交 事务的话,当然结果是没有更新之前的数据

    你换一种方式,不要用Criteria cr=this.getSession().createCriteria(TModule.class);

    就用hql查询试看看,会不会出问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作