我正在为我的项目使用spring data jpa,我有以下代码:
我的存储库:
@Repository
@Transactional
public interface StudentRepository extends PagingAndSortingRepository<Student, Long> {
List<Student> findByIdIn(List<Long> ids);
}
我的实体是:
@Entity
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
// other fields
// getters/setters
}
在我的服务类的某个地方,我有
@Autowired
StudentRepository studentRepository;
然后我从我的服务层调用findByIdIn,如:
studentRepository.findByIdIn(listOfIds);
findByIdIn(listOfIds)方法完美无缺,一切都按预期工作。
我知道findByIdIn()方法的实现是由spring数据jpa提供的。
但是我无法确定它的实现在哪里? 它的实施究竟是什么? 这些方法是否在运行时根据方法名称生成?如果是,它们是如何动态生成和执行的?
谢谢!
答案 0 :(得分:0)
你可以在Spring代码的核心部分挖掘一下它是如何工作的(https://github.com/spring-projects/spring-data-commons/tree/master/src/main/java/org/springframework/data/repository),但基本上,它是在启动时将接口方法解析为HQL。
您可以测试只是编辑一个不存在的字段的方法名称,并且在启动时你会收到一条错误,说明没有字段。