从Spring数据的多个表中选择
问题内容:
我需要编写一个选择查询,以从Spring数据存储库层的多个表中获取数据。我知道我们可以使用@Query编写自定义查询,但这仅从单个表中返回值吗?
SELECT s.service_id, s.name, us.rating_id
FROM services s,
ratings r,
user_services us
where
us.service_id = s.service_id and
us.rating_id = r.rating_id and
us.user_id= ?;
问题答案:
您的Interface方法可以使用本机SQL从多个表中选择列,并且该方法将返回对象数组的列表:
public interface MyRepository extends JpaRepository {
@Query(name = [name], nativeQuery = true)
List<Object[]> methodThatQueriesMultipleTables();
}
列表中的每个项目都是对象数组,它是一行数据
您还可以创建自定义存储库实现:
如何向Spring Data JPA添加自定义方法
@NoRepositoryBean
public interface CustomRepository<[Your object]> {
List<Object[]> methodThatQueriesMultipleTables();
}
public class MyRepositoryImpl<[Your object]> implements CustomRepository<[Your object] {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<Object[]> methodThatQueriesMultipleTables() {
//use JPA query to select columns from different tables
Query nativeQuery = entityManager.createNativeQuery("query");
return query.getResultList();
}
}