Duvida no uso createQuery?

12 respostas
P

Olá,
estou tentando criar uma createQuery e está me dando erro ???

o que será ???

se alguém puder me ajudar …

agradeceria…

--main


System.out.println("Lista Todos Usuários");
		List lista = usuarioBusiness.listaTodosUsuario();
		
		for (Iterator iterator = lista.iterator(); iterator.hasNext();) {
			Usuario usuarios = (Usuario) iterator.next();
			System.out.println("id ="+usuarios.getId());
			System.out.println("login ="+usuarios.getLogin());
			System.out.println("senha ="+usuarios.getPassword());
			System.out.println("nome ="+usuarios.getNome());
			System.out.println("---------------------------------");
		}
--
Lista Todos Usuários
Erro =java.lang.IllegalArgumentException: An exception occured while creating a query in EntityManager



--
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

import br.com.exemplojpa.modelo.Usuario;

/**
 * 
 * 
 * 
 * 
 * 
 * 
 */
public class UsuarioDAO {

	private EntityManagerFactory factory = null;

	private EntityManager manager = null;

	public UsuarioDAO() {
		factory = Persistence.createEntityManagerFactory("exemploJPA");
		manager = factory.createEntityManager();
	}

	/**
	 * Inserindo um usuário
	 * 
	 * @param usuario
	 */
	public void inserirUsuario(Usuario usuario) {

		EntityTransaction transaction = manager.getTransaction();

		try {
			transaction.begin();

			manager.persist(usuario);

			transaction.commit();

		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());

		} finally {
			manager.close();
		}

	}

	/**
	 * Pesquisar um usuário
	 * 
	 * @param usuario
	 */
	public Usuario pesquisarUsuario(Integer id, Usuario usuario) {
		EntityTransaction transaction = manager.getTransaction();

		Usuario retorno = null;

		try {

			transaction.begin();

			retorno = (Usuario) manager.find(Usuario.class, id);
			
		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());
		} finally {
			manager.close();
		}

		return retorno;

	}

	public List listaTodosUsuario(){
	
		List lista = new ArrayList(0);
		try{
			
			lista  = manager.createQuery("select id, login,senha,nome from usuario where id > ?") 
			.setParameter(0, 1)
                        .getResultList();
			 
			
		}catch(Exception e){
			System.out.println("Erro ="+e);
		}
		
		return lista;
	}
}

--

/**
	 * Pesquisar usuário
	 */
	public List listaTodosUsuario() {

		usuarioDAO = new UsuarioDAO();

		List retorno = usuarioDAO.listaTodosUsuario();

		return retorno;

	}
	
--

12 Respostas

elugo

vc já debugou a lista que ele retorna da busca pra vc ver como que le deixa aquilo organizado?
não é mais simples vc mandar retornar o usuário e depois só pegar os gets que vc precisa!!! tente dessa
forma, assim acho que não dará erro.

P

qdo executa a linha

lista  = manager.createQuery("select id, login,senha,nome from usuario where id > ?1 ")

.setParameter(1, 1)

.getResultList();

da erro
@Entity
@Table(name = "Usuario")
public class Usuario {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;

	@Column
	private String login;

	@Column
	private String password;

	@Column

	private String nome;

	/*
	 * Gets e Sets
	 */
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
elugo

da o select só no usuario!!!

ai ele retorna pra vc uma lista de objetos desse tipo e não da erro.

P

não querendo abusar poderia dar exemplo

pois já teneti de tudo …

abs

felipeguerra

Criteria+Projections não resolve?

elugo

da uma olhada ai!

List<Usuario> listUsuario = manager.createQuery("FROM Usuario u where u.idUsuario = " + id).getResultList();

for (Usuario usuario : listUsuario) {   
       System.out.println("id ="+usuario.getId());   
       System.out.println("login ="+usuario.getLogin());   
       System.out.println("senha ="+usuario.getPassword());   
       System.out.println("nome ="+usuario.getNome());   
       System.out.println("---------------------------------");   
        }
P

o que fiz e o resultado foi

public List listaTodosUsuario(){
		EntityTransaction transaction = manager.getTransaction();
		
		List lista = new ArrayList();
		try{
			
			 lista = manager.createQuery("FROM Usuario u where u.id = " + 10).getResultList();   
		}catch(Exception e){
			System.out.println("Erro ="+e);
		}
		
		return lista;
	}
}
rro =java.lang.IllegalArgumentException: An exception occured while creating a query in EntityManager
elugo

em algum momento vc criou sua EntityManger?
assim

EntityManager manager = factory.createEntityManager();

*factory é uma instancia de EntityManagerFactory!!

P

como estou usando …

public class UsuarioDAO {

	private EntityManagerFactory factory = null;

	private EntityManager manager = null;

	public UsuarioDAO() {
		factory = Persistence.createEntityManagerFactory("exemploJPA");
		manager = factory.createEntityManager();
	}

	/**
	 * Inserindo um usuário
	 * 
	 * @param usuario
	 */
	public void inserirUsuario(Usuario usuario) {

		EntityTransaction transaction = manager.getTransaction();

		try {
			transaction.begin();

			manager.persist(usuario);

			transaction.commit();
            
		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());

		} finally {
			//manager.close();
		}

	}

	/**
	 * Pesquisar um usuário
	 * 
	 * @param usuario
	 */
	public Usuario pesquisarUsuario(Integer id, Usuario usuario) {
		EntityTransaction transaction = manager.getTransaction();

		Usuario retorno = null;

		try {

			transaction.begin();

			retorno = (Usuario) manager.find(Usuario.class, id);
			
		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());
		} finally {
			transaction.commit();
			//manager.close();
		}

		return retorno;

	}

	public List listaTodosUsuario(){
		EntityTransaction transaction = manager.getTransaction();
		
		List lista = new ArrayList(0);
		try{
			
			//1Query q = manager.createQuery("select u.id ,u.login ,u.password,u.nome from USUARIO u where u.id &gt; 1");
			
			//lista = q.getResultList();
			
			//2Query q  = manager.createQuery("select object(u) from Usuario u where c.id &gt; :cod" )
			//.setParameter("cod", "10");
			//lista = q.getResultList();
			
			 lista = manager.createQuery("select object(u) FROM Usuario u where u.id &gt; " + 10).getResultList();   
		}catch(Exception e){
			System.out.println("Erro ="+e);
		}
		
		return lista;
	}
	
	public void removeUsuario(Usuario usuario){
		
		EntityTransaction transaction = manager.getTransaction();
		try{
		
			transaction.begin();
			manager.remove(usuario);
			System.out.println("Usuário removido com sucesso !!!!");
			
		}catch(Exception e){
			transaction.rollback();
			System.out.println("Erro="+e);
		}finally{
			transaction.commit();
		}
		
		
	}
}
elugo

cara eu fiz um trabalho de faculdade JPA + Oracle
nele tem tudo que vc ta perguntando ai até relatório!!

cadastros, consultas…
acessa ai http://code.google.com/p/scv-sistema-controlador-vendas/source/browse/#svn/trunk/SCV/src/scv/control

P

é isso mesmo que preciso tem como puxar os fontes

e mandar via e-mail …pode ser ???

pra mim da uma olhada e verificar minha duvidas …

abs

elugo

Passa o email que t envio

Criado 28 de novembro de 2008
Ultima resposta 28 de nov. de 2008
Respostas 12
Participantes 3