【发布时间】:2013-07-31 15:56:21
【问题描述】:
我有一个使用 Hibernate Criteria 构建的查询(我只向您展示“主要”部分):
Criteria criteria = sessionProvider.get().createCriteria(User.class);
// Add other stuff to the query like joins, group-bys, order-bys etc.
// In the projection list add the "id" of the user.
projectionList.add(Projections.property("id"), "id");
// finally using same entity class User as dto
criteria.setResultTransformer(Transformers.aliasToBean(User.class));
所以我终于可以做到了:
List<User> users = criteria.list();
当我尝试从该实体加载值时出现问题。例如:
users.get(0).getFirstName();
返回空值。因此,基本上由 Transformers.aliasToBean 创建的“dtos”之类的实体仅通过投影接收到“id”,它们不能像 get/load/etc 加载的普通实体那样工作。
有没有办法让这些 dto 作为实体“工作”?
【问题讨论】:
-
不要设置
Projection或ResultTransformer、sessionProvider.get().createCriteria(User.class).list()。 -
如果我不使用它们,它会返回一个 Object[],其值与关联的 groupbys 相关。
-
在这种情况下,我认为您需要在上面发布更多查询,以便我们可以计算出它实际返回的内容......