Logo Hardware.com.br
chamuska
chamuska Veterano Registrado
1.4K Mensagens 16 Curtidas

Query customizada usando JPA ?

#1 Por chamuska 31/10/2015 - 15:38
Pessoal, criei um servidor REST com Spring usando JPA, apenas para ver como funciona, nesse projeto estou usando uma classe repository que uso para fazer consultas básicas no mysql, porem, quero saber como posso fazer para executar uma query, algo como "select id, tipo from carro where id=1" ??

Não sei se precisa, mas vou colocar o controller e o application.properties que estou usando no projeto.

Controller
@RestController
@RequestMapping("/carros&quot
public class CarroController {

@Autowired
CarroRepository carroRepository;


@RequestMapping(value = {"", "/"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Iterable<Carro> listCarros() {

Iterable<Carro> carros = carroRepository.findAll();

return carros;
}

@RequestMapping(value = "/busca/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Carro buscaCarroId(@PathVariable(value = "id&quot int id ){

Carro carro;

carro = carroRepository.findById(id);

return carro;
}

@RequestMapping(value = "/filtrotipo/{tipo}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Carro filtroCarroTipo(@PathVariable(value = "tipo&quot String tipo ){



return null;
}

}


No método filtroCarroTipo pretendo fazer a consulta.

application.properties
spring.datasource.url: jdbc:mysql://localhost/rest_carros
spring.datasource.username=root
spring.datasource.password=12345
spring.datasource.driverClassName=com.mysql.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true



Obrigrado!
chamuska
chamuska Veterano Registrado
1.4K Mensagens 16 Curtidas
#2 Por chamuska
02/11/2015 - 22:42
Pessoal, dei um jeito usando EntityManager e createQuery para rodar uma consulta sql, porem, não estou conseguindo fazer funcionar quando eu coloco as colunas que quero no SELECT e gostaria de saber uma forma de fazer isso funcionar.

A consulta ficou assim:
TypedQuery<Carro> query = em.createQuery("SELECT c.id, c.nome, c.tipo FROM Carro c WHERE c.tipo like '"+tipo+"'", Carro.class);

return query.getResultList();


Então, como posso fazer com que ele execute essa consulta ?!

Consegui fazer substituindo Carro.class por Object[].class, mas o que ele retorna não vai me servir!
André Krebs - programador web
krebscode.eti.br
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal