我在尝试将Hibernate事务中的更改推送到数据库以使DbUnit在我的测试用例中正常工作时遇到问题.似乎DbUnit没有看到Hibernate所做的更改,因为它们还没有在事务结束时提交……而且我不确定如何重构我的测试用例以使其工作.

这是我过度简化的测试用例来证明我的问题: –

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = {

"classpath:applicationContext-test.xml"

})

@TransactionConfiguration(transactionManager = "transactionManager")

@Transactional

public class SomeTest {

@Autowired

protected DataSource dataSource;

@Autowired

private SessionFactory sessionFactory;

@Test

public void testThis() throws Exception {

Session session = sessionFactory.getCurrentSession();

assertEquals("initial overlayType count",4,session.createQuery("from OverlayType").list().size());

//-----------

// Imagine this block is an API call,ex: someService.save("AAA");

// But for the sake of simplicity,I do it this way

OverlayType overlayType = new OverlayType();

overlayType.setName("AAA");

session.save(overlayType);

//-----------

// flush has no effect here

session.flush();

assertEquals("new overlayType count",5,session.createQuery("from OverlayType").list().size());

// pull the data from database using dbunit

IDatabaseConnection connection = new DatabaseConnection(dataSource.getConnection());

connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY,new MysqLDataTypeFactory());

QueryDataSet partialDataSet = new QueryDataSet(connection);

partialDataSet.addTable("resultSet","select * from overlayType");

ITable actualTable = partialDataSet.getTable("resultSet");

// FAIL: Actual row count is 4 instead of 5

assertEquals("dbunit's overlayType count",actualTable.getRowCount());

DataSourceUtils.releaseConnection(connection.getConnection(),dataSource);

}

}

我使用DbUnit的全部想法是: –

>调用someService.save(…)将数据保存到多个表中.

>使用DbUnit从XML获取预期的表.

>使用DbUnit从数据库中获取实际表.

> Dosertion.assertEquals(expectedTable,actualTable);.

但是,在这一点上,我无法让DbUnit看到Hibernate在事务中所做的更改.

我应该如何改变以使DbUnit与Hibernate事务很好地协作?

谢谢.

dbunit java_Java – 让DbUnit使用Hibernate事务相关推荐

  1. 【大话Hibernate】hibernate事务管理

    事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰. 数据库向用户提供保存当前程序状态的方法,叫事 ...

  2. Spring中配置Hibernate事务的四种方式

    2019独角兽企业重金招聘Python工程师标准>>> 为了保证数据的一致性,在编程的时候往往需要引入事务这个概念.事务有4个特性:原子性.一致性.隔离性.持久性. 事务的种类有两种 ...

  3. Spring4.x(9)--Spring的Hibernate事务-XML

    Spring的Hibernate事务-XML 一.拷贝必要的jar包到工程的lib目录 二.创建spring的配置文件并导入约束 <?xml version="1.0" en ...

  4. Hibernate事务

    Hibernate事务控制     在实际生产中,每个业务逻辑都是由一系列对数据库访问完成的,这一系列的数据访问可能包括删除一些数据,然后再插入一些数据, 这里的删除和插入的动作不可分割,要么全部执行 ...

  5. dbunit java_java - 错误地抛出了Java DBUnit AmbiguousTableNameException - 堆栈内存溢出

    我正在尝试DBUnit(2.6.0),我正在尝试导出我的完整数据库(PostgreSQL). 但是抛出以下异常: 线程"main"中的异常org.dbunit.database.A ...

  6. Hibernate 事务总结

    2019独角兽企业重金招聘Python工程师标准>>> 一.事务的定义 1.物理上的数据库事务 2.逻辑上事务与persistence context有关 3.应用程序上的事务指的是 ...

  7. Spring对Hibernate事务管理

    http://www.cnblogs.com/m-xy/archive/2013/05/14/3077627.html(挺好的) 还有一种用parent的配置方式,parent配置到哪个层面,事务就控 ...

  8. Hibernate事务管理-HibernateTransactionManager-对hibernate session的管理

    由于对SSH还停留在比较初级的应用水平上,今天在遇到一个疑惑时折腾了很久,具体问题是这样的, 有这么一个测试方法, 1 public static void test1() { 2 Applicati ...

  9. spring 中 Hibernate 事务和JDBC事务嵌套问题

    http://www.iteye.com/topic/11063?page=2 ---mixed ORM and JDBC usage is a feature of Spring DAO 这是Rod ...

最新文章

  1. 网络接口配置-Bonding
  2. 转:关于CCDISK的优化
  3. 3.X内核下设备树–platform设备驱动
  4. 【51单片机快速入门指南】8:看门狗定时器(WDT)
  5. vue-cli脚手架下,assets中的图片路径使用变量?
  6. 七种主流平面板式介绍
  7. 【Vue】—数组对象变更检测
  8. c/c++教程 - 2.1 程序的内存模型 内存四区 代码区 全局区 堆区 栈区 new操作符
  9. 【Linux】Ubuntu输入法不能开机自启的解决方法
  10. seaborn_Seaborn Kdeplot –综合指南
  11. 现代计算机网络发展为第几代,晶体管计算机是第几代_个人计算机使用的电子元器件_计算机网络最突出的(6)...
  12. API RSA签名颁发证书
  13. LaTeX 公式编辑器(网页版)
  14. 数字IC设计学习笔记_专业书单整理
  15. python控制手机模拟器_通过adb连接手机或者模拟器进行python开发
  16. 一阶线性微分方程 解法
  17. NLP模型(二)——GloVe介绍
  18. IP-guard苹果加密软件苹果系统加密Mac文档加密软件
  19. WINDOS服务器安全设置
  20. Switch开关,两边字隐藏

热门文章

  1. 【STM32】FreeRTOS 其他任务 API 函数
  2. 第6章-一阶多智体系统一致性-->6.4 切换拓扑系统一致性
  3. 【控制】能量函数Graph Laplacian Potential and Lyapunov Functions for Multi-Agent Systems
  4. P10 线性系统状态空间设计-《Matlab/Simulink与控制系统仿真》程序指令总结
  5. [Python] sys.argv[] 用法
  6. Win10 基于excel 文件的python下载脚本
  7. Spring基于 Annotation 的简单介绍
  8. directive多指令之间的异步调用
  9. Android用户界面开发(2):ListView
  10. .NET基础示例系列之二十:对图片的几种简单处理