Spring JPA方法名称验证器

时间:2015-09-21 16:30:57

标签: java spring jpa

Spring JpaRepository可以从接口方法名称生成SQL查询:

File Usage: Entity type

如你所见 - 它可能很复杂。因此,方法名称可能不正确并且发生编译器错误。

问题:

在真实项目中使用它之前是否可以检查/验证方法名称(需要一些编译时间,试验和错误)?

或者也许可以在使用之前将这样的方法名称转换为SQL - 以查看此方法名称是否有效以及它是否正确执行所有操作?

当然,显而易见的方法是制作较小的项目以供测试。但我觉得这一定是更好的方式。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

您可以使用测试数据库和Spring测试运行器编写测试。有多种方法可以做到这一点,所以我只是给出一个粗略的草图来帮助你开始:

  • 使用内存(例如H2)数据库
  • 创建测试DataSource bean,而不是真正的DataSource Spring bean。
  • 创建一个Spring测试上下文,它将:
  • 使用@RunWith(SpringJUnit4ClassRunner.class)使用JUnit运行测试。
  • 使用@ContextConfiguration指向测试Spring上下文
  • 使用@Transactional使测试具有事务性,并自动回滚测试方法中的任何更改
  • @Autowire EntityManager和Spring Data存储库,并在测试中使用它们。

请参阅Integration Testing上的Spring文档。

答案 1 :(得分:0)

有点晚了,但是......

如果要在不编译界面的情况下测试方法名称,可以在 org.springframework.data.repository.query.parser 中找到名为 PartTree 的类。在 spring-data-commons:1.12.6 jar。

  

new PartTree(stringVersionOfMethodName,classOfEntityRepoIsFor)

如果它无法正确解析名称,它将抛出异常。

对于maven,我使用的是1.4.3.RELEASE的spring-boot-starter-parent,包括spring-boot-starter-data-jpa依赖