我正在浏览Spring Data JPA教程。 我是困惑关于这个框架如何在内部工作。 让我提出具体的方案Spring Data JPA如何在内部工作
有这是简单地通过下面的接口
@Repository
public interface LocationJPARepository extends JpaRepository<Location, Long> {
List<Location> findByStateLike(String stateName);
}
和相应的测试用例更换特定代码
/**
* Custom finder
*/
public List<Location> getLocationByStateName(String name) {
@SuppressWarnings("unchecked")
List<Location> locs = entityManager
.createQuery("select l from Location l where l.state like :state")
.setParameter("state", name + "%").getResultList(); // note
return locs;
}
工作的罚款
@Test
public void testFindWithLike() throws Exception {
List<Location> locs = locationRepository.getLocationByStateName("New");
assertEquals(4, locs.size());
}
新的测试案例
@Test
public void testFindWithLike() throws Exception {
List<Location> locs = locationJPARepository.findByStateLike("New");
assertEquals(4, locs.size());
}
我的问题
- 如何框架知道如果我使用寻找精确匹配=或使用SQL LIKE操作部分匹配(它不能是方法的名字吗?)
- 如果它在某种程度上决定我我正在寻找部分匹配,然后仍然有子选项...像名称%或%名称或%名称%...
- 也如何决定案例是重要的像? (我可以像使用toUpper()一样使用SQL来区分大小写,即通过比较大写的所有内容)
- (增加的问题)有没有一种方法可以检查日志中的EXACT SQL?
希望我能够正确解释我的问题。让我知道如果我需要添加更清晰。
我建议阅读参考指南,[这里](http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation )和[这里](http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods)。简而言之,它基于你的方法如何命名。 –
有没有办法检查日志中的EXACT SQL? – Lav