繁体   English   中英

Spring 数据 JPA - 创建自定义查询方法生成器

[英]Spring Data JPA - Creating custom query method generator

在 Spring 数据 JPA 中,我们可以定义一个扩展Repository的存储库接口并编写自定义方法。

如果此方法遵循特殊语法,Spring Data 将自动生成方法体。

例如(来自文档):

interface PersonRepository extends Repository<Person, Long> {
    List<Person> findByLastname(String lastname);
}

有没有办法自定义方法生成代码以在语法中引入新的关键字?

例如:

Person findExactlyOneById(Long id);

此方法将返回实体或引发自定义异常。

我知道我可以自定义特定的存储库以及基础存储库并实现上述示例的效果,但我特别要求自动生成正文的方法。

框架中是否设计了扩展点? 或者是更改源代码的唯一选择?

在您的情况下,您始终可以使用CrudRepository.findById(Long id)JpaRepository.getOne(Long id) 我建议从JpaRepository class 继承,因为包括所有类型的存储库。

您可以在Repository class 的@Query注释中设置nativeQuery = true ,如下所示:

public static final String FIND_PROJECTS = "SELECT projectId, projectName FROM projects";

@Query(value = FIND_PROJECTS, nativeQuery = true)
public List<Object[]> findProjects();

Spring 数据文档可能也值得一看。

还有一些例子1。

public interface UserRepository extends JpaRepository<User, Long> {

  @Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
  User findByEmailAddress(String emailAddress);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM