我想用<receiver android:name=".AlarmReciever"
android:enabled="false">
</receiver>
来获得query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
。但我有一个例外:
List<Map>
我无法找到已实施的java.lang.NoSuchMethodError: org.hibernate.query.Query.setResultTransformer(Lorg/hibernate/transform/ResultTransformer;)Lorg/hibernate/Query;
类。
方法org.hibernate.query.Query
位于setResultTransformer
。
为什么不推荐使用org.hibernate.Query?
答案 0 :(得分:5)
ResultTransformer附带一个未遵循功能接口语法的旧定义。因此,在这个例子中我们不能使用lambda。 Hibernate 6.0旨在克服这个问题,因此不推荐使用Hibernate ORM 5.2 ResultTransformer。然而,将提供一种替代方案,因此我们在本文中讨论的概念即使在Hibernate 6中也会停滞不前。
答案 1 :(得分:0)
Hibernate 6 尚未发布。但是,基于此 issue ResultTransformer 接口被拆分为 2 个功能接口:TupleTransformer 和 ResultListTransformer。
答案 2 :(得分:-1)
如果您在查询中选择多个项目,请不要使用session.createQuery(hql,transformerClass);
,而是使用旧的弃用方法。
答案 3 :(得分:-1)
由于Hibernate 5.2使用Java 8,因此您可以使用流api
List<EmployeeDto> resultList = session
.createQuery(" from Employee", Employee.class)
.stream()
.map((employee) -> {
return new EmployeeDto(employee);
})
.collect(Collectors.toList());
此代码还将改善性能。