当前位置: 首页 > 知识库问答 >
问题:

Hibernate条件:dto作为实体

秦毅
2023-03-14

我有一个用Hibernate标准构建的查询(我只向您展示了“主要”部分):

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();

返回NULL。因此,基本上,由Transformers.AliastoBean创建的实体(通过projection只接收到“ID”)不像由get/load/等加载的普通实体那样工作。

有没有办法让这些dto作为实体“工作”呢?

共有1个答案

施永贞
2023-03-14

在projectionList中传递参数似乎是错误的,您需要像这样修改projectionList。

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 columns name which are mapped with the entity
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("id"));
projectionList.add(Projections.property("firstName"));
criteria.setProjection(projectionList);

List<User> results = criteria.list();

//output results
for(User user : results) {
    user.getFirstName();        
}
 类似资料:
  • 问题内容: 我们将使用DTO在表示层之间来回发送数据。我们有像这样的图层: facade appService domain 并且我们使用推土机来帮助我们将实体转换为dto。但是我现在有两个问题: 从实体到dto,我们可以使用推土机,但是从dto到实体,我们可以使用推土机吗?如果是,如何? 我应该在哪里创建实体?在外观或DTOAssembler中? 例如,我必须注册一本书。这本书的实体外观如下:

  • 我需要 在Hibernate条件中。由于这个问题,我知道如何将分组结果作为的列表: 我不知道如何添加HAVING子句。我想,它类似于,但是我如何引用计数呢? 有没有办法在查询中引用结果元组元素?

  • 问题内容: Java专家能否请您帮我写以下查询作为SQL查询条件查询的一部分。 问题答案: 您需要编写一个相关的子查询。假设属性/类名称与上面的列/表名称匹配:

  • 我想忽略createAlias中的默认连接限制。我有一段一刀切的关系。 我的问题是Hibernate为连接关系生成默认限制。 波约 注:费用表中没有诊断模板栏。 Charge.java 诊断emplate.java 查询 标准 Hibernate查询 如何避免这种情况?或者我的关系有什么问题? 请帮帮我。。!

  • 我有一个项目,我需要在数据库中存储用户。我正在使用Hibernate,在模块的某些部分中,也在实验性地使用Spring数据JPA。我有一个用于注册客户的RESTendpoint,并在那里接收UserDTO对象。之后,在其他服务中,我需要将其转换为UserEntity并保存在数据库中。 现在我创建了用户设置页面,我需要显示一些关于登录用户的信息。我不想发送UserDTO对象,因为有太多的数据,所以我

  • 我正在尝试将复杂的实体转换为Dto。我想从DTO中删除实体中的一些值。 我的实体看起来像这样(为了简单起见,省略了实体的大部分): 我找到了一个对简单实体非常有效的解决方案:将实体转换为数据。如果我采纳了自定义拦截器的建议,删除id或整个item属性就可以了。 我尝试了两种方法来定义我的DTO: < li >它仅返回id和整个项目。 现在的问题是我只想删除 item 属性中的某些值。例如,私有字段