Ash*_*pta 5 java spring jpa spring-data spring-data-jpa
我有一个interface实现JPARepository,有三个方法,其中一个是自定义@Query.
public interface PersonRepository extends JpaRepository<Person, Long> {
List<Person> getPersonBycountryCode(String countryCode);
List<Person> findByCountryCodeAndCity(String string,String city);
@Query(value = "SELECT person.firstName as firstName, person.lastName as lastName, person.countryCode as country, person.city as city,"
+ " SQRT(POWER((69.1 * (person.age - :age )) , 2 )"
+ " + POWER((53 * (person.experience - :experience )), 2)) as eligibility"
+ " FROM Person person"
+ " ORDER BY eligibility ASC")
List<PersonDetailsDto> findPersonDetailsByEligibility(
@Param("age") BigDecimal age,
@Param("experience") BigDecimal experience,
Pageable pageable
);
}
Run Code Online (Sandbox Code Playgroud)
问题是:方法用@Query不返回列表PersonDetailsDto但返回列表的列表(List<List<String>>).
PersonDetailsDto是一个POJO类,其中包含查询输出(firstName,lastName,country,city,eligibility)中描述的所有变量,以及包含所有变量作为Parameters的构造函数.其他两个方法确实返回Person对象的列表.
任何的想法?
如果我没记错的话,JPA 不查找特定字段背后的想法是,从表的一行中获取一列或所有列的成本(效率方面)相同。但是为了解决您的问题,您可以在注释nativeQuery = true中@Query设置像这样的存储库类:
public static final String FIND_SOMETHING = "SELECT somethingId, somethingName FROM something";
@Query(FIND_SOMETHING, nativeQuery = true)
public List<Object[]> findSomethings();
Run Code Online (Sandbox Code Playgroud)
我希望这将帮助您解决您的问题。
| 归档时间: |
|
| 查看次数: |
9146 次 |
| 最近记录: |