Preciso usar SQL bruto em um Repositório Spring Data, isso é possível? Tudo o que vejo ao redor @Query
é sempre baseado em entidades.
java
hibernate
spring-data-jpa
Webnet
fonte
fonte
Respostas:
Cite os documentos de referência do Spring Data JPA .
Além disso, consulte esta seção sobre como fazer isso com uma consulta nativa nomeada.
fonte
@Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
SIM, você pode fazer isso das maneiras abaixo:
1. Por CrudRepository (Projeção)
Os Spring Data Repositories geralmente retornam o modelo de domínio ao usar métodos de consulta. No entanto, às vezes, você pode precisar alterar a exibição desse modelo por vários motivos.
Suponha que sua entidade seja assim:
Agora sua classe Projection é como a abaixo. Ele pode aqueles campos que você precisava.
E
Your Data Access Object(Dao) is like bellow
:Agora
ArrayList<IUserProjection> findUserUsingRollNo(String rollNo)
lhe dará a lista de usuários.2. Usando EntityManager
Suponha que sua consulta seja " select id, name from users where roll_no = 1001 ".
Aqui a consulta retornará um objeto com a coluna id e name. Sua classe de resposta é como abaixo:
Sua classe de resposta é como:
aqui o construtor UserObject obterá um Object Array e definirá os dados com o objeto.
A função de execução de sua consulta é a seguinte:
Aqui você deve importar os pacotes abaixo:
Agora sua classe principal, você tem que chamar esta função. Primeiro, obtenha o EntityManager e chame esta
getUserByRoll(EntityManager entityManager,String rollNo)
função. O procedimento de chamada é fornecido abaixo:Aqui estão as importações
obtenha
EntityManager
desta forma:Agora você tem dados neste userObject.
Nota:
query.getSingleResult () retorna uma matriz de objeto. Você deve manter a posição da coluna e o tipo de dados com a posição da coluna de consulta.
consulta retorna uma matriz e é
[0] --> id and [1] -> name
.Mais informações visite este tópico e este tópico
Obrigado :)
fonte
Também é possível usar o repositório Spring Data JDBC , que é um projeto de comunidade construído em cima do Spring Data Commons para acessar bancos de dados com SQL bruto, sem usar JPA.
É menos poderoso que o Spring Data JPA, mas se você deseja uma solução leve para projetos simples sem usar um ORM como o Hibernate, vale a pena tentar essa solução.
fonte
podemos usar createNativeQuery ("Here Nagitive SQL Query");
por exemplo :
fonte
em
variável.É possível usar consulta bruta em um repositório Spring.
fonte