【发布时间】:2019-04-18 17:14:03
【问题描述】:
我想将查询结果分配给 DTO 对象。 DTO 如下所示:
@Getter
@Setter
@NoArgsConstructor
public class Metric {
private int share;
private int shareholder;
public Metric(int share, int shareholder) {
this.share = share;
this.shareholder = shareholder;
}
}
查询如下所示:
@RepositoryRestResource(collectionResourceRel = "shareholders", path = "shareholders")
public interface ShareholderRepository extends PagingAndSortingRepository<Shareholder, Integer> {
@Query(value = "SELECT new com.company.shareholders.sh.Metric(SUM(s.no_of_shares),COUNT(*)) FROM shareholders s WHERE s.attend=true")
Metric getMetrics();
}
但是,这不起作用,因为我遇到了以下异常:
Caused by:org.hibernate.QueryException: could not resolve property: no_of_shares of:com.company.shareholders.sh.Shareholder[SELECT new com.company.shareholders.sh.Metric(SUM(s.no_of_shares),COUNT(*)) FROM com.company.shareholders.sh.Shareholder s WHERE s.attend=true]
【问题讨论】:
-
有什么异常?
-
@MaciejKowalski 这是引发的异常。
Caused by:org.hibernate.QueryException: could not resolve property: no_of_shares of:com.company.shareholders.sh.Shareholder[SELECT new com.company.shareholders.sh.Metric(SUM(s.no_of_shares),COUNT(*)) FROM com.company.shareholders.sh.Shareholder s WHERE s.attend=true] -
您的查询似乎是本机查询(!= JPQL 或 HQL)。在这种情况下,请在注释中指定它,例如:
@Query(value = "sql string ", nativeQuery = true) -
这个solution 可以在这种情况下正常工作。
标签: spring-boot spring-data-jpa jpql dto