gpt4 book ai didi

java - hibernate 的 JUnit : this instance does not yet exist as a row in the database

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:46 26 4
gpt4 key购买 nike

我正在使用 JUnit 进行测试。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:com/mt/sm/application-context.xml", "classpath:com/mt/sm/security-context.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class LocationPathServiceImplTest { /* Class code here */ }

测试方法声明非常简单:

@Test
public void testRefresh() { /* Method body */}

我在 setup() 中创建了一个保存对象并保存到数据库。在 @Test 中,我从 DAO 运行 refresh()(refresh() 方法只调用 EntityManager .refresh()),但它导致我出现以下错误

org.hibernate.HibernateException: this instance does not yet exist as a row in the database
javax.persistence.PersistenceException: org.hibernate.HibernateException: this instance does not yet exist as a row in the database

我不知道如何修复它。以前有人遇到过这个吗?所有建议将不胜感激。

我在任何时候都不会提交对数据库的更改,也不会调用 .flush()。据我所知,它们在当前交易中。

最佳答案

如果没有更多代码,我会说,您需要刷新您的 DAO,以便实例得到持久化。 refresh 只是对象级别,而 flush 在数据库级别执行实际事务(因此 rollback = true 所以它在测试后回滚)

关于java - hibernate 的 JUnit : this instance does not yet exist as a row in the database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8518639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com