gpt4 book ai didi

querydsl - 替换 import org.springframework.test.context.transaction.TransactionConfiguration;在 Spring Test 4.3.1 版本中?

转载 作者:行者123 更新时间:2023-12-03 06:36:18 30 4
gpt4 key购买 nike

我正在研究 JPA QueryDSL 示例。在此示例中,我创建了 PersonDaoTest.java。早些时候,我使用的是较低版本的 spring-test,因为客户要求将其更新为最新版本,所以我使用了 4.3.1.RELEASE。当我使用这个版本时,我发现 import org.springframework.test.context.transaction.TransactionConfiguration; 已被@deprecated。谁能告诉我最新版本中 import org.springframework.test.context.transaction.TransactionConfiguration; 的替代品是什么?

PersonDaoTest.java

@ContextConfiguration("/test-context.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TransactionConfiguration(defaultRollback = true)
public class PersonDaoTest {

@Autowired
private PersonDao personDao;

//

@Test
public void testCreation() {
personDao.save(new Person("Erich", "Gamma"));
final Person person = new Person("Kent", "Beck");
personDao.save(person);
personDao.save(new Person("Ralph", "Johnson"));

final Person personFromDb = personDao.findPersonsByFirstnameQueryDSL("Kent").get(0);
Assert.assertEquals(person.getId(), personFromDb.getId());
}

@Test
public void testMultipleFilter() {
personDao.save(new Person("Erich", "Gamma"));
final Person person = personDao.save(new Person("Ralph", "Beck"));
final Person person2 = personDao.save(new Person("Ralph", "Johnson"));

final Person personFromDb = personDao.findPersonsByFirstnameAndSurnameQueryDSL("Ralph", "Johnson").get(0);
Assert.assertNotSame(person.getId(), personFromDb.getId());
Assert.assertEquals(person2.getId(), personFromDb.getId());
}

@Test
public void testOrdering() {
final Person person = personDao.save(new Person("Kent", "Gamma"));
personDao.save(new Person("Ralph", "Johnson"));
final Person person2 = personDao.save(new Person("Kent", "Zivago"));

final Person personFromDb = personDao.findPersonsByFirstnameInDescendingOrderQueryDSL("Kent").get(0);
Assert.assertNotSame(person.getId(), personFromDb.getId());
Assert.assertEquals(person2.getId(), personFromDb.getId());
}

@Test
public void testMaxAge() {
personDao.save(new Person("Kent", "Gamma", 20));
personDao.save(new Person("Ralph", "Johnson", 35));
personDao.save(new Person("Kent", "Zivago", 30));

final int maxAge = personDao.findMaxAge();
Assert.assertTrue(maxAge == 35);
}

@Test
public void testMaxAgeByName() {
personDao.save(new Person("Kent", "Gamma", 20));
personDao.save(new Person("Ralph", "Johnson", 35));
personDao.save(new Person("Kent", "Zivago", 30));

final Map<String, Integer> maxAge = personDao.findMaxAgeByName();
Assert.assertTrue(maxAge.size() == 2);
Assert.assertSame(35, maxAge.get("Ralph"));
Assert.assertSame(30, maxAge.get("Kent"));
}
}

enter image description here

最佳答案

文档的存在是有原因的:作为开发人员,您应该阅读它!

Javadoc for @TransactionConfiguration明确指出:

Deprecated.

As of Spring Framework 4.2, use @Rollback or @Commit at the class level and the transactionManager qualifier in @Transactional.

因此,您问题的答案就是@Rollback

但是...更重要的是,您的 @TransactionConfiguration(defaultRollback=true) 声明是无用的,因为无论如何默认值都是 true 。所以你可以完全删除它。

问候,

Sam(Spring TestContext 框架的作者)

关于querydsl - 替换 import org.springframework.test.context.transaction.TransactionConfiguration;在 Spring Test 4.3.1 版本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39623282/

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