Voce está usando hibernate, a forma de chamar com hibernate é bem diferente do sql normal, por isso é chamado de HQL, no hibernate você pode fazer essas query usando Criteria ou então usando namedQuery, recomendo você a procurar na internet exemplos de DAO no hibernate que já vem até com o código de insert, update, remove, etc. Geralmente em uma classe do tipo controller. Abaixo vai exemplo do meu código que uso, lembrando que a classe VoidDAO é abstrata para não ter que ficar copiando código repetido toda hora, e a ClienteDAO implementa os códigos necessários para chamar insert, remove, update, pesquisa por id, e todos os metodos com anotação @Override são específicos da classe cliente.
public abstract class VoidDAO<T> {
private EntityManager entityManager;
public VoidDAO(EntityManager em) {
this.entityManager = em;
entityManager.getTransaction().begin();
}
public void salvar(T objeto) {
this.entityManager.persist(objeto);
commit();
}
public void alterar(T objeto) {
this.entityManager.merge(objeto);
commit();
}
public void remover(T objeto) {
this.entityManager.remove(this.entityManager.merge(objeto));
commit();
}
public void fechar(){
entityManager.close();
}
public void commit() {
if (this.entityManager == null) {
return;
}
if (this.entityManager.getTransaction().isActive()) {
this.entityManager.getTransaction().commit();
}
}
public void rollBack(){
if (this.entityManager == null) {
return;
}
if (this.entityManager.getTransaction().isActive()) {
this.entityManager.getTransaction().rollback();
}
}
/**
*
* @param namedQuery
* @return
*/
public List<T> getListaCompleta(String namedQuery) {
Query query = this.entityManager.createNamedQuery(namedQuery);
List<T> object=(List<T>) query.getResultList();
rollBack();
return object;
}
public T findById(Class<T> classe, Integer id) {
T objeto=(T) this.entityManager.find(classe, id);
rollBack();
return objeto;
}
public T buscaUltimo() {
return null;
}
public T buscaPrimeiro() {
return null;
}
public T findNome(String nome) {
return null;
}
public T findCodigo(int codigo) {
return null;
}
public T findCPF(String CPF){
return null;
}
public T findUsuario(String usuario) {
return null;
}
public T findAnterior(int codigo){
return null;
}
public T findProximo(int codigo){
return null;
}
}
public class ClienteDAO extends VoidDAO<CadastroCliente> {
public ClienteDAO(){
super(ThreadPrincipal.em);
}
@Override
public CadastroCliente buscaUltimo(){
Query query = ThreadPrincipal.em.createNamedQuery("CadastroCliente.findUltimoRegistro");
try{
CadastroCliente cadastroCliente;
cadastroCliente = (CadastroCliente) query.getSingleResult();
rollBack();
return cadastroCliente;
}catch(NoResultException ex){
rollBack();
return null;
}
}
@Override
public CadastroCliente buscaPrimeiro(){
Query query = ThreadPrincipal.em.createNamedQuery("CadastroCliente.findPrimeiroRegistro");
try{
CadastroCliente cadastroCliente;
cadastroCliente = (CadastroCliente) query.getSingleResult();
rollBack();
return cadastroCliente;
}catch(NoResultException ex){
rollBack();
return null;
}
}
@Override
public CadastroCliente findCodigo(int codigo){
Query query = ThreadPrincipal.em.createNamedQuery("CadastroCliente.findCodigo");
query.setParameter("codigo", codigo);
try{
CadastroCliente cadastroCliente;
cadastroCliente = (CadastroCliente) query.getSingleResult();
rollBack();
return cadastroCliente;
}catch(NoResultException ex){
rollBack();
return null;
}
}
@Override
public CadastroCliente findAnterior(int codigo){
Query query = ThreadPrincipal.em.createNamedQuery("CadastroCliente.findAnterior");
query.setParameter("codigo", codigo);
query.setMaxResults(1);
try{
CadastroCliente cadastroCliente = (CadastroCliente)query.getSingleResult();
rollBack();
return cadastroCliente;
}catch(NoResultException ex){
rollBack();
return null;
}
}
@Override
public CadastroCliente findProximo(int codigo){
Query query = ThreadPrincipal.em.createNamedQuery("CadastroCliente.findProximo");
query.setParameter("codigo", codigo);
query.setMaxResults(1);
try{
CadastroCliente cadastroCliente = (CadastroCliente)query.getSingleResult();
rollBack();
return cadastroCliente;
}catch(NoResultException ex){
rollBack();
return null;
}
}
@Override
public CadastroCliente findNome(String nome){
Query query = ThreadPrincipal.em.createNamedQuery("CadastroCliente.findNome");
query.setParameter("nome",nome+"%");
query.setMaxResults(1);
try{
CadastroCliente cadastroCliente;
cadastroCliente = (CadastroCliente) query.getSingleResult();
rollBack();
return cadastroCliente;
}catch(NoResultException ex){
rollBack();
return null;
}
}
@Override
public CadastroCliente findCPF(String CPF){
Query query = ThreadPrincipal.em.createNamedQuery("CadastroCliente.findUltimoCPF");
query.setParameter("cpf",CPF);
query.setMaxResults(1);
try{
CadastroCliente cadastroCliente;
cadastroCliente = (CadastroCliente) query.getSingleResult();
rollBack();
return cadastroCliente;
}catch(NoResultException ex){
rollBack();
return null;
}
}
}