Java Spring数据Jpa查询返回的对象具有空值

Java Spring数据Jpa查询返回的对象具有空值,java,spring,spring-data-jpa,Java,Spring,Spring Data Jpa,我正在尝试从JPA存储库获取自定义类型的对象 VisitRepository.java ClientRating.java public List findAllSorted(字符串startDate、字符串endDate、Long fieldNum){ List visitReport=visitpository.findByDate(startDate,endDate); log.debug(“visitReport:+visitReport.size()); 对于(iIntegerRepo

我正在尝试从JPA存储库获取自定义类型的对象

VisitRepository.java

ClientRating.java

public List findAllSorted(字符串startDate、字符串endDate、Long fieldNum){
List visitReport=visitpository.findByDate(startDate,endDate);
log.debug(“visitReport:+visitReport.size());
对于(iIntegerReport)数据访问:visitReport
) {
log.debug(“值:+visit.getValue());
}
在调试中,我得到visitReport.size()=27(这是正确的记录计数),但是
visit.getValue()对于每一行都为NULL,尽管此字段中对于每一行都没有NULL值。
怎么了?

您可以使用NativeQuery注释:

看看:


从本机查询返回自定义对象时,结果列名必须与自定义接口的名称匹配,否则它们将只有
null
值。例如:

@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
    @Query(value = "SELECT "\"id\" FROM \"my_entity\"", nativeQuery = true)
    List<IdNative> findAllIdNative();

    interface IdNative {
        Long getEntityId();
    }
}
或者,更改接口方法以匹配列名:

Long getId();

可能有用:谢谢,Strelok!这很有用。我将查询改为:@query(value=“选择客户端id作为clientId,count(*)作为visitCount from visit where(DATE(jhi\u DATE)介于:startDate和:endDate)group by client\u id之间,nativeQuery=true)。这很有效。也就是说,问题在于字段的命名。再次感谢!
 public List<ClientsRatingDTO> findAllSorted(String startDate, String endDate, Long fieldNum) {
        List<IIntegerReportData> visitReport = visitRepository.findByDate(startDate, endDate);   
        log.debug("visitReport:" + visitReport.size());

        for (IIntegerReportData visit : visitReport
        ) {
            log.debug("value: " + visit.getValue());
          }
@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
    @Query(value = "SELECT "\"id\" FROM \"my_entity\"", nativeQuery = true)
    List<IdNative> findAllIdNative();

    interface IdNative {
        Long getEntityId();
    }
}
SELECT "id" AS "entityId" FROM "my_entity"
Long getId();