JPA Desktop

8 respostas
Alchemist

Opa blz ai pessoal ? Estava eu tentando aprender algo de JPA, quando me deparei neste erro :

já tentei de tudo e nada será que alquem pode me ajudar ? Olha as minhas classes e o meu xml…

import java.sql.SQLException;

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

import bean.Pessoa;


public class main {

	public static 	void main(String[] args) throws ClassNotFoundException, SQLException {

       EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa_intro");
       EntityManager em = emf.createEntityManager();

       em.getTransaction().begin();

	   Pessoa pessoa = new Pessoa();
	   pessoa.setId(1);
	   pessoa.setNome("teste");
	   
	   em.persist(pessoa);
	   em.getTransaction().commit();
	   em.close();
	}
}
package bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name="PESSOA")
public class Pessoa {

	private long id;
	private String nome;
	
	@Id
	@GeneratedValue
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	
	@Column(name="NM_PESSOA")
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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 persistence_1_0.xsd" version="1.0">
		<persistence-unit name="jpa_intro" transaction-type="RESOURCE_LOCAL">
			<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
	    	<class>bean.Funcionario</class>
	   		<class>bean.Pessoa</class>
	    	
	    	<properties>
	     		<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
	    		<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/jpa"/>
	     		<property name="toplink.jdbc.user" value="root"/>
	     		<property name="toplink.jdbc.password" value=""/>
	  		</properties>
		</persistence-unit>
</persistence>

o que será que está faltando ?

8 Respostas

andreiribas

Provavelmente faltam as libs do toplink no classpath do projeto.

Alchemist

Opa vc poderia passar o nome das libs para eu adicionar ?

Alchemist

Mais niguem para ajudar ? :frowning:

Felagund

tem um tal de google, que que vc acha de perguntar pra ele assim o toplink+download

Alchemist

Bom então vamos melhorar a brincadeira… pequei todas as classes e coloquei em um projeto com o JBOSS, configurei o projeto como JPA e coloquei que seria por eclipseLink… continua o mesmo erro…

Felagund

Muito educado o senhor viu… como se eu n tive-se rodado o google antes de vir postar aqui…

Andre_Brito

Bom, se você já deu uma olhada no Google então você sabe que esse erro pode ser ocasionado por uma serie de fatores. Agora é fazer uma lista delas e ir excluindo aquelas que não podem ser.

Onde fica seu persistence.xml? Deixa ele dentro da pasta src/META-INF/persistence.xml (ou WebContent/META-INF). Quando fiz uma aplicação desktop, meu persistence.xml estava meio diferente do seu.
<?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="app">
                <properties>
                        <property name="hibernate.hbm2ddl.auto" value="update" />
                        <property name="hibernate.format_sql" value="true" />
                        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
                        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
                        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/db_app" />
                        <property name="hibernate.archive.autodetection" value="class" />
                        <property name="hibernate.show_sql" value="false" />
                        <property name="hibernate.connection.username" value="root" />
                        <property name="hibernate.connection.password" value="" />
                </properties>
        </persistence-unit>
</persistence>
Não quer dizer que a sua está errada... Mas se você quiser, pode tentar tirar esses classes daí e colocar o autodetection do toplink (e o transaction type). Sobre o jar, eu acredito que seja só um... Pelo menos o do eclipselink foi só um.
Alchemist

Andre Brito :stuck_out_tongue: funcionou aqui… agora vou pesquisar pq com toplink n foi… depois posto aqui :stuck_out_tongue:

Alchemist

Para encerrar o assunto, conseguir fazer para o TOPLINK:

apenas baixei o pacote oferecido no site: http://www.eclipse.org/eclipselink/downloads/

Então adicionei estas duas libes ao meu projeto :

persistence.xml

<?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="testeJpa">  
		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
		<class>bean.Pessoa</class>
		<properties>
			<property name="eclipselink.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="eclipselink.jdbc.url" value="jdbc:mysql://localhost:3306/jpa" />
			<property name="eclipselink.jdbc.user" value="root" />
			<property name="eclipselink.jdbc.password" value="" />
		</properties>
	</persistence-unit>
</persistence>

Um bom artigo falando:
http://www.vogella.de/articles/JavaPersistenceAPI/article.html

Fui…

Isto ai :stuck_out_tongue:

Criado 5 de abril de 2010
Ultima resposta 6 de abr. de 2010
Respostas 8
Participantes 4