Loading ...
Sorry, an error occurred while loading the content.

Re:[riojug] Erro com Hibernate + JPA.... Por favor... me ajudem....

Expand Messages
  • Ricardo Coelho
    Era isso mesmo... Não sabia que precisava deste Jar, o material que usei como referencia não citava este JAR. Mto obrigado.. Depois disso ele só pediu para
    Message 1 of 3 , Sep 30, 2007
    • 0 Attachment
      Era isso mesmo...
         
          Não sabia que precisava deste Jar, o material que usei como referencia não citava este JAR.

          Mto obrigado..
          Depois disso ele só pediu para explicitar o dialeto do banco, fiz lá no persistence.xml e ficou legal.

          Outra coisa que aconteceu foi que o netBeans estava usando o topLink como padrão, mesmo eu configurando o hibernate como provider, ele usava o topLink e gerava um NullPointerException.
          Arranquei o topLink do projeto, que estava lá como padrão e aí funcionou legal.

          Muito obrgido pela atenção.

      Ricardo Coelho.


      Fabiano Suet <fsuet@...> escreveu:
      Olá Ricardo,

      Pela exception, me parece que está faltando adicionar o jar do javassist no seu projeto/classpath. Essa lib é utilizada para manipulação de Bytecode e é um projeto mantido pelo JBoss Group.

      Acredito que isso resolva o seu problema.

      Att,

      Fabiano Suet

      > Pessoal estou com um problema no Hibernate + JPA + Firebird.
      >
      > Estou desenvolvendo o meu projeto final da faculdade e estou utilizando o JDK 1.6, o netBeans, Hibernate, firebir, o sistema rodará em ambiente JSE e estou tendo alguns problemas para tentar fazer a persistencia com Hibernate + JPA.
      >
      > primeiramente tenho uma dúvida, quando vou configurar o meu persistence. xml com o netbeans, ele me dá duas opções de providers. um é o TopLink e o outro é o Hibernate, que desejo utilizar. A dúvida é: que provider é este topLink ?
      >
      > 1 - Anotei a classe a ser persistida, e ela ficou da seguinte forma:
      >
      > package scraad.model. domain;
      >
      > import javax.persistence. Entity;
      > import javax.persistence. GeneratedValue;
      > import javax.persistence. GenerationType;
      > import javax.persistence. Id;
      >
      > @Entity
      > public class RamoAtuacao implements java.io.Serializabl e {
      >
      > @Id
      > @GeneratedValue( strategy= GenerationType. AUTO)
      > private int id;
      >
      > private String codigo;
      >
      > private String descricao;
      >
      > public String getCodigo() {
      > return codigo;
      > }
      >
      > public void setCodigo(String codigo) {
      > this.codigo = codigo;
      > }
      >
      > public String getDescricao( ) {
      > return descricao;
      > }
      >
      > public void setDescricao( String descricao) {
      > this.descricao = descricao;
      > }
      >
      > public int getId() {
      > return id;
      > }
      >
      > public void setId(int id) {
      > this.id = id;
      > }
      >
      > }
      >
      >
      > 2 - configurei meu persistence. xml na pasta META-INF, configurei o Hibernate como meu provider e ele ficou da seguinte forma:
      >
      > <?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="unit" transaction- type="RESOURCE_ LOCAL">
      > <provider>org. hibernate. ejb.HibernatePer sistence< /provider>
      > <class>scraad. model.domain. RamoAtuacao< /class>
      > <properties>
      > <property name="hibernate. connection. username" value="SYSDBA" />
      > <property name="hibernate. connection. driver_class" value="org.firebird sql.jdbc. FBDriver" />
      > <property name="hibernate. connection. password" value="masterkey" />
      > <property name="hibernate. connection. url" value="jdbc: firebirdsql: LOCALHOST/ 3050:c:/BD/ SCRAAD_BD. FDB"/>
      > <property name="hibernate. hbm2ddl.auto" value="update" />
      > <property name="hibernate. dialect=org. hibernate. dialect" value="FirebirdDial ect"/>
      > </properties>
      > </persistence- unit>
      > </persistence>
      >
      >
      > 3 - Criei uma classe chamada HibernateConnection , ela será a responsável por criar e retornar as minhas EntutyManagers, o código da mesma é o seguinte :
      >
      > package scraad.model. hibernate;
      >
      > import java.util.Collectio n;
      > import java.util.HashMap;
      > import java.util.Map;
      > import javax.persistence. EntityManager;
      > import javax.persistence. EntityManagerFac tory;
      > import javax.persistence. Persistence;
      >
      > /**
      > *
      > * @author Ricardo
      > */
      > public class HibernateConnection {
      > private static HashMap meuMap;
      > private static EntityManagerFactor y emf;
      > private static EntityManager entityManager;
      >
      > public void HibernateConnection (){
      >
      > }
      >
      > public EntityManager getEntityManager( ){
      > emf = Persistence. createEntityMana gerFactory( "unit");
      >
      > entityManager = emf.createEntityMan ager();
      > if (entityManager= =null) {
      > entityManager = emf.createEntityMan ager();
      > }
      > return (EntityManager) entityManager;
      > }
      > }
      >
      > 4 - Criei outra classe, chamada HibernateDao, que implementa uma interface OperacoesDao. esta classe será a responsável por persistir efetivamente os objetos.
      >
      > import java.sql.SQLExcepti on;
      > import org.hibernate. Transaction;
      > import scraad.model. hibernate. HibernateConnect ion;
      > import scraad.model. dao.OperacoesDao ;
      > import javax.persistence. *;
      >
      > /**
      > *
      > * @author Ricardo
      > */
      > public class HibernateDao implements OperacoesDao{
      > private EntityManager entityManager = null;
      > private EntityTransaction transacao = null;
      >
      > /**
      > * Creates a new instance of HibernateDao
      > */
      > public HibernateDao( ) {
      > }
      >
      > /**
      > *
      > * @param obj
      > * @return
      > */
      > public boolean inserir(Object obj){
      > HibernateConnection hc = new HibernateConnection ();
      > entityManager = hc.getEntityManager ();
      > transacao = entityManager. getTransaction( );
      > transacao.begin( );
      > try{
      > entityManager. persist(obj) ;
      > transacao.commit( );
      > return true;
      > }
      > catch(Exception e){
      > transacao.rollback( );
      > e.printStackTrace( );
      > return false;
      > }finally{
      > entityManager. close();
      > }
      > }
      > }
      >
      > 5 - Criei a classe Action para fazer a devida comunicação, não coloquei a mesma aqui por não achar necessário, enfim... quando executo o getEntityManager( ), o mesmo tenta criar a EntityManagerFactor y e quando isto ocorre eu tenho a seguinte exception gerada:
      >
      > emf = Persistence. createEntityMana gerFactory( "unit");
      >
      > java.lang.NullPoint erException
      > at oracle.toplink. essentials. ejb.cmp3. EntityManagerFac toryProvider. createEntityMana gerFactory
      >
      > (EntityManagerFacto ryProvider. java:120)
      > at javax.persistence. Persistence. createEntityMana gerFactory( Persistence. java:51)
      > at javax.persistence. Persistence. createEntityMana gerFactory( Persistence. java:33)
      >
      > 6 - Depois de muito quebrar a cebeça, observei ele está usando o createEntityManager Factory do TopLink e meu provider no persistence. xml é o Hibernate. Após observar isso, alterei minha classe e ela ficou da seguinte forma:
      >
      > package scraad.model. hibernate;
      >
      > import java.util.Collectio n;
      > import java.util.HashMap;
      > import java.util.Map;
      > import javax.persistence. EntityManager;
      > import javax.persistence. EntityManagerFac tory;
      > import javax.persistence. Persistence;
      > import org.hibernate. ejb.HibernateEnt ityManager;
      > import org.hibernate. ejb.HibernateEnt ityManagerFactor y;
      >
      > /**
      > *
      > * @author Ricardo
      > */
      > public class HibernateConnection {
      > private static HashMap meuMap;
      > private static HibernateEntityMana gerFactory emf;
      > private static HibernateEntityMana ger entityManager;
      >
      > public void HibernateConnection (){
      >
      > }
      >
      > public EntityManager getEntityManager( ){
      > emf = (HibernateEntityMan agerFactory) Persistence. createEntityMana gerFactory( "unit");
      >
      > entityManager = (HibernateEntityMan ager) emf.createEntityMan ager();
      > if (entityManager= =null) {
      > entityManager = (HibernateEntityMan ager) emf.createEntityMan ager();
      > }
      > return (EntityManager) entityManager;
      > }
      > }
      >
      > 7 - Como podem observar, alterei minha EntityManagerFactor y e EntityManager respectivamente para as do Hibernate. Ao executar desta forma, tenho retornada a seguinte exception, retornada também ao tentar criar a EntityManagerFactor y.
      >
      > log4j:WARN No appenders could be found for logger (org.hibernate. cfg.annotations. Version).
      > log4j:WARN Please initialize the log4j system properly.
      > Exception occurred during event dispatching:
      > java.lang.NoClassDe fFoundError: javassist/bytecode/ ClassFile
      > at org.hibernate. ejb.packaging. JarVisitor. checkAnnotationM atching(JarVisit or.java:332)
      > at org.hibernate. ejb.packaging. JarVisitor. executeJavaEleme ntFilter( JarVisitor. java:298)
      > at org.hibernate. ejb.packaging. JarVisitor. addElement( JarVisitor. java:259)
      > at org.hibernate. ejb.packaging. ExplodedJarVisit or.getClassNames InTree(ExplodedJ arVisitor. java:54)
      > at org.hibernate. ejb.packaging. ExplodedJarVisit or.getClassNames InTree(ExplodedJ arVisitor. java:62)
      > at org.hibernate. ejb.packaging. ExplodedJarVisit or.getClassNames InTree(ExplodedJ arVisitor. java:62)
      > at org.hibernate. ejb.packaging. ExplodedJarVisit or.getClassNames InTree(ExplodedJ arVisitor. java:62)
      > at org.hibernate. ejb.packaging. ExplodedJarVisit or.doProcessElem ents(ExplodedJar Visitor.java: 45)
      > at org.hibernate. ejb.packaging. JarVisitor. getMatchingEntri es(JarVisitor. java:241)
      > at org.hibernate. ejb.Ejb3Configur ation.addMetadat aFromVisitor( Ejb3Configuratio n.java:271)
      > at org.hibernate. ejb.Ejb3Configur ation.configure( Ejb3Configuratio n.java:240)
      > at org.hibernate. ejb.HibernatePer sistence. createEntityMana gerFactory( HibernatePersist ence.java: 120)
      > at javax.persistence. Persistence. createEntityMana gerFactory( Persistence. java:51)
      > at javax.persistence. Persistence. createEntityMana gerFactory( Persistence. java:33)
      >
      >
      > Quando utilizo o provider da topLink, funciona, só dá problema com o Generator, mas quando tento usar o provider do Hibernate, acontece estes problemas.
      >
      > Por favor, alguém pode me ajudar ?? Sei que deve ser alguma bobeira minha...de iniciante... devo estar vacilando em algum lugar, e desculpem-me se a dúvida for muito boba, mas é que não sei mais a quem recorrer... já busquei na referencia e na documentação do hibernate e do jpa, á procurei em fóruns... artigos... mas não consegui nada que pudesse me ajudar a resolver este problema com sucesso.
      >
      > Grato.
      > Boa noite.
      >
      > Um abraço.
      >
      > Ricardo da Silva Coelho.
      >
      >
      > Flickr agora em português. Você clica, todo mundo vê. Saiba mais.


      Flickr agora em português. Você clica, todo mundo vê. Saiba mais.

    Your message has been successfully submitted and would be delivered to recipients shortly.