Hibernate 过滤器及;Spring数据Jpa中group by查询的分页
我有一个实体如下:Hibernate 过滤器及;Spring数据Jpa中group by查询的分页,hibernate,spring-data-jpa,hibernate-mapping,hibernate-criteria,Hibernate,Spring Data Jpa,Hibernate Mapping,Hibernate Criteria,我有一个实体如下: @Entity public class Something { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String field1; private String field2; private String field3; //@Getters and @Setters } 我需要在字段
@Entity
public class Something {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String field1;
private String field2;
private String field3;
//@Getters and @Setters
}
我需要在字段1、字段2和字段3上使用可选的过滤器。我还需要对数据进行分页,并返回count(*)和field3值。相同的sql查询是(不带过滤器):
select field3, count(*) as number from something group by field3 LIMIT 0,10;
带1个过滤器:
select field3, count(*) as number from somethhing where field1=:field1 group by field3 LIMIT 0,10;
类似地,对于字段1和字段2上的过滤器
问题:
List<Object[]> resultData = entityManager.createNativeQuery(query).getResultList();
List resultData=entityManager.createNativeQuery(query.getResultList();
它可以工作,但问题是:它返回列表,我必须手动将字段转换为正确的类型,并创建所需结果的列表
有人能帮我吗。如果有其他有效的解决方案/方法,请让我知道。如果使用entityManager没有问题,请告诉我,我应该做什么,以便它返回我的列表而不是列表。“我应该做什么,以便它返回我的列表而不是列表。”应该是“
List
而不是List
”?它不返回列表,而是返回列表。这就是问题的全部。所以如果我使用List,我就不能在它上面使用getter。当我像这样使用任何getter:result.get(0).getField3()时,我会得到以下异常:java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为com.project.model.ResultClass“我应该做什么,以便它返回列表而不是列表。”应该是“List
而不是List
”?它不返回列表,它返回列表。这就是问题的全部。因此,如果我使用列表,我就不能在其上使用getter。当我使用任何像这样的getter:result.get(0)。getField3()时,我得到以下异常:java.lang.ClassCastException:[Ljava.lang.Object;无法转换为com.project.model.ResultClass