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

使用JPA用本机查询填充DTO

索曾琪
2023-03-14

我想用本机查询的结果填充数据传输对象类。但我收到以下错误:

    nested exception is org.hibernate.MappingException: Unknown entity: br.com.cpb.gsa.dto.UserDTO

这是我的DTO课

package br.com.cpb.gsa.dto;

import java.io.Serializable;

public class UserDTO implements Serializable {

    private static final long serialVersionUID = 4406975982782060793L;

    private Integer id_Usuario;
    private String login;

    public UserDTO(Integer id_Usuario, String login) {
        this.id_Usuario = id_Usuario;
        this.login = login;
    }

    public Integer getId_Usuario() {
        return id_Usuario;
    }
    public void setId_Usuario(Integer id_Usuario) {
        this.id_Usuario = id_Usuario;
    }
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
}

这是我的原生查询。这是一个简单的查询:

import br.com.cpb.gsa.dto.UserDTO;

@Repository
public class UserRepositoryImpl implements UserCustomRepository {

    @PersistenceContext
    private EntityManager em;

    @Override
    public UserDTO findById(Integer id) {


        String query =    " select  au.id_Usuario, "
                        + "         au.login"
                        + " from    Adm_Usuario au"
                        + " where   au.id_Usuario = 1"; 

        Query natQuery = em.createNativeQuery(query, UserDTO.class);
        UserDTO userDTO = (UserDTO) natQuery.getSingleResult();
        return userDTO;     
    }

}

我使用的是Spring Data JPA,但我知道在hibernate中存在一个方法setResultTransformer,但我在JPA中找不到类似的方法。

在我的例子中,我需要使用本机查询,因为在其他查询中会使用表值函数

共有1个答案

谷梁建中
2023-03-14

预测是你正在寻找的东西。

 类似资料:
  • 当使用jpa本机查询 事务传播是我们正在使用的正确jpa的唯一特性吗? 在我的意见中,我就像使用普通的旧jdbc pluc jpa事务传播 我正在阅读PRO JPA一书,根据我的理解 当我们使用JPA本机查询获取一组标量值时(与我们使用jdbc的方式很相似),实际上没有托管实体和持久性上下文的概念。当我们通过本机查询检索实体时,情况会发生变化。

  • 我有4个选项的下拉列表。我希望根据从不同字段中选择的值预先填充这些选项。不同的领域是“国家”领域。 如果选择了国家“A”或国家“b”,我希望下拉列表填充选项1。如果是另一个国家,请填写选项2。 提前谢谢

  • 问题内容: 我有要查询的模型(称为“活动”)(使用Mongoose)。他们的架构如下所示: 当我询问他们,我填充,,,和字段(所有引用)。在那之后,我也深入了这个领域。这是我的查询代码: 这已经是一个相对复杂的查询,但是我需要做更多。如果它碰到了声明的一部分,我 还 需要确保的字段等于字符串。我尝试使用,但是由于必须先填充事件,因此无法查询其任何字段。我还需要在其他多个查询中实现相同的目标。 如我

  • 问题内容: JPA()中的本机查询是否支持缓存? 我正在填写自己的数据传输对象,因为sql查询会联接多个表,并且仅从表中获取几个列。 问候 问题答案: 这是可能的,但 您必须使用显式或。 也可以看看 缓存SQL查询问题 hibernate:真正了解二级和查询缓存

  • 我需要通过在Hibernate中执行本机查询获得结果集。虽然我使用的是EntityManager,但查询和结果集可能不是实体。 当我尝试下面的代码时,我得到了一个结果。因为我要求的是一个有值的结果。(Hibernate JPA) 结果是:爱丽丝 当我试图从相同的代码中获得多个select out(查询为select name)时,指定来自fresher_test(其中id=1) 这有一种方法,我可