gpt4 book ai didi

java - 如何在 Spring JUnit 测试中从 Hibernate 获取单独的实例

转载 作者:行者123 更新时间:2023-12-02 00:39:29 24 4
gpt4 key购买 nike

我写了一个测试,我知道它是错误的。我知道这会为originalProduct 和updatedProduct 获取相同的实例,因此当我调用updatedProduct.setProductName("Updated Product Name"); 时,它会更新originalProduct 和updatedProduct 的productName 成员。我如何更改它以便获得该对象的 2 个不同实例。

@Test
@Transactional
public void testUpdateProduct() {
productDao.addProduct(createTempProduct());
Product originalProduct = productDao.getProduct((long)999);
Product updatedProduct = productDao.getProduct((long)999);

updatedProduct.setProductName("Updated Product Name");
productDao.updateProduct(updatedProduct);
Product newProduct = productDao.getProduct((long)999);
Assert.assertNotSame(originalProduct, newProduct);
Assert.assertSame(updatedProduct, newProduct);
}

最佳答案

您正在访问 Hibernate 的 first-level cache 。换句话说,在该测试范围内对 ProductDao.getProduct(999) 的每次调用都将返回相同的 Product 实例,因为第一次加载它时,该实例将存储在 Session 中,以防您再次请求它。为了避免这种情况,您可以 evict the specific object来自 session 或 clear all objects来自调用之间的 session 。

关于java - 如何在 Spring JUnit 测试中从 Hibernate 获取单独的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6781811/

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