JPQL 查询没有 return 正确的输出,抛出错误

JPQL query does not return proper output, throws error

下面的查询抛出一个错误

@GET
@Path("findByStartEndVari/{startdate}/{enddate} ")
@Produces({"application/json"})


public List<Dailyrecords> findByStartEndVari(@PathParam("startdate") Date startdate, @PathParam("enddate") Date enddate)        

{

    TypedQuery<Dailyrecords> q = em.createQuery("SELECT d.painlevel,  d.painlocation FROM Dailyrecords d WHERE d.submitdate BETWEEN :startdate AND :enddate ", Dailyrecords.class);
    q.setParameter("startdate", startdate);
            q.setParameter("enddate", enddate);

    return q.getResultList();

}

您当前的语法不正确。如果您希望 JPQL 查询 return 一个 DailyRecords 对象,那么您需要 select 整个对象:

TypedQuery<Dailyrecords> q = em.createQuery("SELECT d FROM Dailyrecords d WHERE d.submitdate BETWEEN :startdate AND :enddate ", Dailyrecords.class);
q.setParameter("startdate", startdate);
q.setParameter("enddate", enddate);

如果您真的只想要指定的列,那么您可以尝试以下操作:

Query query = session.createQuery("SELECT d.painlevel,  d.painlocation FROM Dailyrecords d WHERE d.submitdate BETWEEN :startdate AND :enddate");
List<Object[]> rows = query.list();

当您查询单个列时,您将得到一个 Object[],数组中的每个条目对应一列。所以在这种情况下,第一个条目是疼痛程度,第二个条目是疼痛位置。