JPA...erro inserir um objeto.... "main" javax.persistence.PersistenceException: [PersistenceUnit: ex

1 resposta
P

Olá,

estou tentando usar JPA mas qdo tento gravar um objeto me dá o erro abaixo…

o que será que está errado pois estava usando toplink Oracle está bem agor aque tirei e usei
essa configuração persistence.xml está dando erro…

alguém pode meajudar …

o que estou usando :

-JAVA 1.5

DIRETÓRIO

  • ejb3-persistence.jar
  • HIBERNATE3.JAR
  • MYSQL-CONNECTOR-JAVA-5.0.4-BIN.JAR

<ul>
<li>Hibernate Annotations <a href="http://3.3.1.GA">3.3.1.GA</a>
</li>
<li>Hibernate 3.2.6</li>
<li>hibernate.properties not found</li>
<li>Bytecode provider name : cglib</li>
<li>using JDK 1.4 java.sql.Timestamp handling</li>
<li>Hibernate EntityManager <a href="http://3.3.2.GA">3.3.2.GA</a>
</li>
<li>Binding entity from annotated class: br.com.exemplojpa.modelo.Usuario</li>
<li>Bind entity br.com.exemplojpa.modelo.Usuario on table Usuario</li>
<li>Binding entity from annotated class: br.com.exemplojpa.modelo.Centro</li>
<li>Bind entity br.com.exemplojpa.modelo.Centro on table Centro</li>
<li>Binding entity from annotated class: br.com.exemplojpa.modelo.Universidade</li>
<li>Bind entity br.com.exemplojpa.modelo.Universidade on table Universidade</li>
<li>Hibernate Validator <a href="http://3.0.0.GA">3.0.0.GA</a>

Exception in thread main javax.persistence.PersistenceException: [PersistenceUnit: exemploJPA] Unable to build EntityManagerFactory

at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)

at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)

at br.com.exemplojpa.persistencia.UsuarioDAO.<init>(UsuarioDAO.java:28)

at br.com.exemplojpa.negocio.UsuarioBusiness.inserirUsuario(UsuarioBusiness.java:24)

at br.com.exemplojpa.teste.TesteExemploJPA.main(TesteExemploJPA.java:39)

Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Universidade, for columns: [org.hibernate.mapping.Column(centros)]

at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:269)

at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)

at org.hibernate.mapping.Property.isValid(Property.java:185)

at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:440)

at org.hibernate.mapping.RootClass.validate(RootClass.java:192)

at org.hibernate.cfg.Configuration.validate(Configuration.java:1108)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1293)

at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)

at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)

 6 more</li>
</ul>
<hr>
import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.Table;
/**

*
<ul>
<li>
</li>
</ul>
*/

@Entity

@Table(name = "Usuario")

public class Usuario {
<pre><code>@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@Column
private String login;

@Column
private String password;

@Column

private String nome;

/*
 * Gets e Sets
 */

public class TesteExemploJPA {
public static void main(String[] args) {
	/*
	 * Criando o objeto usuário
	 */
	Usuario usuario = new Usuario();
	
	usuario.setLogin("mary171");
	usuario.setPassword("mary99");
	usuario.setNome("lock991");
	
	
	/*
	 * Instanciando a classe de negócio
	 */
	UsuarioBusiness usuarioBusiness = new UsuarioBusiness();

	/*
	 * Inserindo um usuário no banco
	 */
	usuarioBusiness.inserirUsuario(usuario);

	/*
	 * Pesquisando o usuário inserido no banco
	 */

	
	
	Usuario usuarioBanco = new Usuario();

	usuarioBanco = usuarioBusiness.pesquisarUsuario(usuario);

	/*
	 * Mostrando o resultado da consulta no banco
	 */
	System.out.println();
	System.out.println("         Exemplo JPA         ");
	System.out.println("Id: " + usuarioBanco.getId());
	System.out.println("Login: " + usuarioBanco.getLogin());
	System.out.println("Senha: " + usuarioBanco.getPassword());
	System.out.println("Nome: " + usuarioBanco.getNome());
	
	System.out.println("-----------------------------------------");
	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("---------------------------------");
		System.out.println("id ="+usuarios.getId());
		System.out.println("login ="+usuarios.getLogin());
		System.out.println("senha ="+usuarios.getPassword());
		System.out.println("nome ="+usuarios.getNome());
		
	}
	
	// remove Usuario
	Usuario usuarioRemove = new Usuario();
	usuarioRemove.setId(12);
	
	usuarioBusiness.removeUsuario(usuarioRemove);

	// Alteração Usuario
	usuarioRemove = new Usuario();
	usuarioRemove.setId(23);
	usuarioBusiness.alteraUsuario(usuarioRemove);
	
	
}

}

<?xml version=“1.0” encoding=“UTF-8”?> <persistence version=“1.0” xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=“http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd”> <persistence-unit name=“exemploJPA” transaction-type=“RESOURCE_LOCAL”> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>br.com.exemplojpa.modelo.Usuario</class> <class>br.com.exemplojpa.modelo.Centro</class> <class>br.com.exemplojpa.modelo.Universidade</class> <properties> <property name=“hibernate.archive.autodetection” value=“class”/> <property name=“hibernate.connection.driver_class” value=“com.mysql.jdbc.Driver” /> <property name=“hibernate.connection.url” value=“jdbc:mysql://localhost:3306/exemplojpa” /> <property name=“hibernate.connection.username” value=“root”/> <property name=“hibernate.connection.password” value=“root”/> <property name=“hibernate.dialect” value=“org.hibernate.dialect.MySQLDialect” /> <property name=“hibernate.show_sql” value=“true” /> <property name=“hibernate.hbm2ddl.auto” value=“create-tables” /> <property name=“hibernate.cache.provider_class” value=“org.hibernate.cache.OSCacheProvider”/> </properties> </persistence-unit>

</persistence>

/** * * * * * * */ 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);
		transaction.commit();
	} catch (Exception e) {
		transaction.rollback();

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

	return retorno;

}

public List listaTodosUsuario(){
	EntityTransaction transaction = manager.getTransaction();
	Usuario usuario = new Usuario();
	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();
		
		usuario = (Usuario) manager.createQuery("FROM Usuario where id &gt; 1").getSingleResult();
        System.out.println("*******MOstra createQuery ..."+usuario.getNome());
	}catch(Exception e){
		System.out.println("Erro ="+e);
	}
	
	return lista;
}

public void removeUsuario(Usuario usuario){
	
	EntityTransaction transaction = manager.getTransaction();
	try{
	
		transaction.begin();
		
		Usuario ur = manager.find(Usuario.class, usuario.getId());
		if (ur!=null){
		    manager.remove(ur);
		    transaction.commit();
		    System.out.println("Usuário removido com sucesso !!!!"+ ur.getId()+" "+ur.getNome());
		}
	}catch(Exception e){
		transaction.rollback();
		System.out.println("Erro="+e);
	}finally{
		manager.close();
	}
	
	
}

public void alteraUsuario(Usuario usuario){
	
	EntityTransaction transaction = manager.getTransaction();
	try{
	
		transaction.begin();
		
		Usuario ur = manager.find(Usuario.class, usuario.getId());
		System.out.println("_________Antes Update______");
		System.out.println("Id="+ur.getId());
		System.out.println("Nome="+ur.getNome());
		System.out.println("login="+ur.getLogin());
		System.out.println("Senha="+ur.getPassword());
		
		ur.setNome("Meu Nome Novo");
		ur.setLogin("Novo Login");
		ur.setPassword("Nova Senha");
		manager.persist(ur);
		transaction.commit();
		System.out.println("Usuário alterado com sucesso !!!!"+ ur.getId()+" "+ur.getNome());
		System.out.println("_________Depois Update______");
		System.out.println("Id="+ur.getId());
		System.out.println("Nome="+ur.getNome());
		System.out.println("login="+ur.getLogin());
		System.out.println("Senha="+ur.getPassword());
		
	}catch(Exception e){
		transaction.rollback();
		System.out.println("Erro="+e);
	}finally{
		manager.close();
	}
	
	
}
}

1 Resposta

P

Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Universidade, for columns: [org.hibernate.mapping.Column(centros)]

Informe o atributo targetEntity do relacionamento ou utilize generics. Ex:

public class Universidade{ ... java.util.Collection<Centro> centros; ... }

Criado 1 de dezembro de 2008
Ultima resposta 1 de dez. de 2008
Respostas 1
Participantes 2