java - 在 JPA 存储库中使用查询是否是正确的做法?

标签 java spring spring-data-jpa spring-data jpql

我目前正在使用 Spring 数据存储库进行查询(多实体联接),然后返回 POJO 对象列表。这是一个好的做法吗?

例如,我见过从存储库中的查询方法返回 String 的代码。

import java.util.Optional;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.query.Param;
import com.example.Sample

interface TodoRepository extends Repository<Todo, Long> { 

    @Query("SELECT new com.example.Sample(t.title, b.author) FROM Todo t JOIN t.genre b where t.id = :id") 
    List<Sample> findTitleById(@Param("id") Long id);

    @Query("SELECT t.title FROM Todo t where t.id = :id") 
    List<String> findTitleById(@Param("id") Long id);

    Todo findById(Long id);

    Optional<Todo> findById(Long id);
}

那么这里第一种方法可以吗? 我知道它有效 - 但这是不好的做法吗?

最佳答案

存储库模式应该可以通过从方法名称自动生成许多标准查询来帮助您,但是如果您想创建更复杂的查询,您可以使用@Query或写出方法完整。

这是非常好的做法,毕竟这就是 @Query 注释的用途。

关于java - 在 JPA 存储库中使用查询是否是正确的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51626520/

相关文章:

java - apache tomcat java-web 服务上的 NoEndPointException()

java - 如何在Spring配置文件中配置Hibernate

java - setter 在 Spring 框架中如何工作?

java - JPA:如何更改主键中列的顺序

java - 在没有无限递归的情况下将 @OneToMany 关系与 @RestController 结合使用的最佳实践是什么

java - 从 JTree 添加和删除节点

java - 如何从 iterator() 中以正确的顺序获取元素

java - 在条件语句中使用 boolean 值 true 和 false

java - RabbitMQ 连接失败

java - 如何过滤ArrayList中的空值