我有一个表组件和实体组件。我想从jpa查询中选择id = 1条记录。我可以写'findByIdOne'或'findByIdEqualtoOne'吗?那会给我id = 1条记录吗?请让我知道,谢谢。
答案 0 :(得分:1)
不,您不能。请参阅Spring Data JPA文档,其中documents您可以使用的确切关键字。
您可以随意specify查询要执行方法的查询。像
@Query("select c from Component c where c.id=1")
Component findByIdOne();
我确实必须声明免责声明:通过提供此解决方案,我假设您确实确定ID 1始终存在,并且在您可能正在运行该应用程序的任何环境中始终指向完全相同的Component记录。反对。我不建议您在应用程序代码中使用硬编码的数据库ID。
答案 1 :(得分:0)
如果不是唯一的,则可以使用Optional<EntityName> findById(long id)
或List<EntityName> findById(long id)
。
答案 2 :(得分:0)
如果Optional<EntityName> findById(long id)
或List<EntityName> findAllById
不是唯一的,则可以使用。
我们有几种选择:
findByIdIs(long id)
或findByIdEquals(long id)
答案 3 :(得分:0)
您无法直接编写查询dsl,但是使用默认方法使用Java 8是一种“方法”:
假设您有以下查询:
public interface ComponentRespository extends CrudRepository<Component, Long> {
@Query("select c from Component c where c.id=:id")
Component findById(@Param("id") Long id);
default Component findByIdOne() {
return findById(1L);
}
//eventually
default Component findByIdTwo() {
return findById(2L);
}
}
这种方式可以使用:
private ComponentRespository componentRepository;
.....
Component componentOne = componentRepository.findByIdOne();
Component componentTwo = componentRepository.findByIdTwo();