【问题标题】:Strange thing about using hibernate session's saveOrUpdate method使用休眠会话的 saveOrUpdate 方法很奇怪
【发布时间】:2012-02-23 16:44:48
【问题描述】:

我正在使用 hibernate 连接到 mysql 数据库。

我的 saveOrUpdate 方法是:

public void saveOrUpdate(T t){
    Session session = HibernateUtil.getSession();
    Transaction transaction = session.beginTransaction();
    session.saveOrUpdate(t);
    transaction.commit();
}

这个方法我用了大约半年,效果很好。 但是现在当我使用这种方法进行junit测试时,它似乎很糟糕。 我先做 saveOrUpdate 然后使用 Criteria 查询,得到的结果似乎是正确的,但在数据库中实际上没有任何变化。

谁能告诉我这里发生了什么?

非常感谢。

【问题讨论】:

    标签: mysql database hibernate


    【解决方案1】:

    您为事务设置的 JUnit 配置是什么?我相信它将回滚测试中的所有事务。它应该是正确的,因为在测试之后数据库应该恢复到一致/已知的状态。代码的正确性应取决于您编写测试的方式,而不是实际存在于数据库中的记录。

    【讨论】:

    • 谢谢你的回答,我不知道我必须专门为junit更改设置。请问为什么我用hql的时候效果很好?
    • @XuanziHan 你的意思是当你在你的应用程序中运行这个方法时为什么它会起作用?
    • 是的,现在在 junit 中,它似乎有时工作,有时卡住。谢谢
    • @XuanziHan 它将在您的应用程序中工作,因为应用程序旨在根据事务的成功或失败提交到数据库。但是 Junit 在一种沙盒环境中运行,理想情况下,一旦测试用例完成,它应该回滚所有事务。参考这个[链接]static.springsource.org/spring/docs/3.0.5.RELEASE/reference/…关注@TransactionConfiguration
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    相关资源
    最近更新 更多