在我的DAO层中,我有一个类似的Find函数
public List<?> findCategoryWithSentenceNumber(int offset, int maxRec) {
Criteria crit = getSession().createCriteria(Category.class, "cate");
crit.createAlias("cate.sentences", "sent");
crit.setProjection(Projections.projectionList().
add(Projections.property("title"), "title").
add(Projections.count("sent.id"), "numberOfSentence").
add(Projections.groupProperty("title"))
);
crit.setFirstResult(offset);
crit.setMaxResults(maxRec);
return crit.list();
}
因此,为了读取数据,我必须使用Loop(带有Iterator
)
List<?> result = categoryDAO.findCategoryWithSentenceNumber(0, 10);
// List<DQCategoryDTO> dtoList = new ArrayList<>();
for (Iterator<?> it = result.iterator(); it.hasNext(); ) {
Object[] myResult = (Object[]) it.next();
String title = (String) myResult[0];
Long count = (Long) myResult[1];
assertEquals("test", title);
assertEquals(1, count.intValue());
// dQCategoryDTO = new DQCategoryDTO();
// dQCategoryDTO.setTitle(title);
// dQCategoryDTO.setNumberOfSentence(count);
// dtoList.add(dQCategoryDTO);
}
我的问题是:是否有任何api框架可以轻松地将其转换List<?> result
为DTO
对象列表(例如DQCategoryDTO),而无需使用任何循环,迭代器和调用setter / getter来填充值?
您可以使用ResultTransformer,它可以从别名转换为bean(DTO)属性。对于用法,您可以在此处的Hibernate文档第13.1.5节中找到。
首先,我将列出我在查询中使用的三个模型 产品实体: 合作伙伴实体: 和StockProductInfoEntity: 我想从数据库产品中获取所有股票的合作伙伴计算计数。为了方便起见,我创建了一个简单的DTO: 并在JPA存储库中编写JPQL查询: 但我的应用程序甚至没有启动,因为查询验证有问题。我收到以下消息: 原因:组织。冬眠QueryException:查询指定了联接提取,但提取的关联的所有者
我有一个奇怪的问题,我不知道为什么会发生。我肯定我做错了什么,因为这是我第一次使用数据投影,而且我在使用DTOS时从来没有遇到过这样的问题。 我有一个SELECT statemen,它返回各种数据类型的某些列。我有一个接口,我将它传递给JPA存储库,这样它就可以进行接口映射。但是它不是根据列名映射结果(例如'accountnum'->),而是按照字母顺序映射列。因此,如果'date_of_orde
我有一个复杂的本机查询,我正在尝试将其结果映射到非实体DTO类。我正在尝试使用的with 我的DTO类 我的entity类,它具有我将调用此本机查询结果的存储库接口。 存储库 当我从ItemRepository调用getItemDetails()时,出现以下错误: org.springframework.data.mapping.属性引用异常:没有属性项找到项目类型的详细信息 使用和并解决此问题的
我有这些实体-项目 和- 我需要运行此sql查询: 我在ItemRepository中使用了这个[1],但性能不好。它正在检索项目和类别中的所有字段(包括我不需要的与类别的联接)。 [1] 我正在尝试使用命名查询和投影来提高性能,但我似乎一事无成。我一直遇到-<代码>验证失败,无法查询方法公共抽象java。util。列出findByItemSet(长)。我尝试创建一个DTO类和一个接口来做同样的事