Заполните DTO с помощью Native Query, используя JPA - PullRequest
0 голосов
/ 10 октября 2019

Я хотел бы заполнить класс объекта передачи данных Результатом собственного запроса. Но я получаю следующую ошибку:

    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 Ответ

1 голос
/ 10 октября 2019

Прогнозы - это то, что вы ищете.

...