Fórum Erro Spring + Jpa 2 + JunitTest #393121

29/12/2010

0

Ola pessoal.Estou comecando a usar Spring e ao tentar compilar meu projeto aparece o seguinte erro.Oq poderia ser?

init:
Deleting: C:\Users\Andrei\Documents\Software Manager\SistemaJuridico\SistemaJuridico-jar\build\built-jar.properties
deps-jar:
Updating property file: C:\Users\Andrei\Documents\Software Manager\SistemaJuridico\SistemaJuridico-jar\build\built-jar.properties
Deleting: C:\Users\Andrei\Documents\Software Manager\SistemaJuridico\SistemaJuridico-jar\null1821604262
Compiling 2 source files to C:\Users\Andrei\Documents\Software Manager\SistemaJuridico\SistemaJuridico-jar\build\classes
Note: Creating non-static metadata factory ...
Note: Building metadata class for round element: br.com.sistemajuridico.dao.imp.DaoGenericImp
error: java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$TypeSymbol cannot be cast to javax.lang.model.element.TypeElement


An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.RuntimeException: java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$TypeSymbol cannot be cast to javax.lang.model.element.TypeElement
        at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:400)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:625)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:554)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:699)
        at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:981)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
        at com.sun.tools.javac.main.Main.compile(Main.java:353)
        at com.sun.tools.javac.main.Main.compile(Main.java:279)
        at com.sun.tools.javac.main.Main.compile(Main.java:270)
        at com.sun.tools.javac.Main.compile(Main.java:69)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56)
        at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1097)
        at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:906)
        at org.netbeans.modules.java.source.ant.JavacTask.execute(JavacTask.java:136)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:390)
        at org.apache.tools.ant.Target.performTasks(Target.java:411)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1366)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1249)
        at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:284)
        at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:539)
        at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:154)
Caused by: java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$TypeSymbol cannot be cast to javax.lang.model.element.TypeElement
        at org.eclipse.persistence.internal.jpa.modelgen.MetadataMirrorFactory.getMetadataClass(MetadataMirrorFactory.java:116)
        at org.eclipse.persistence.internal.jpa.modelgen.MetadataMirrorFactory.getMetadataClass(MetadataMirrorFactory.java:178)
        at org.eclipse.persistence.internal.jpa.modelgen.visitors.TypeVisitor.visitDeclared(TypeVisitor.java:77)
        at org.eclipse.persistence.internal.jpa.modelgen.visitors.TypeVisitor.visitDeclared(TypeVisitor.java:39)
        at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:696)
        at org.eclipse.persistence.internal.jpa.modelgen.visitors.ElementVisitor.visitType(ElementVisitor.java:214)
        at org.eclipse.persistence.internal.jpa.modelgen.visitors.ElementVisitor.visitType(ElementVisitor.java:50)
        at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:832)
        at org.eclipse.persistence.internal.jpa.modelgen.MetadataMirrorFactory.getMetadataClass(MetadataMirrorFactory.java:125)
        at org.eclipse.persistence.internal.jpa.modelgen.MetadataMirrorFactory.setEnvironments(MetadataMirrorFactory.java:266)
        at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:361)
        ... 46 more
C:\Users\Andrei\Documents\Software Manager\SistemaJuridico\SistemaJuridico-jar\nbproject\build-impl.xml:609: The following error occurred while executing this line:
C:\Users\Andrei\Documents\Software Manager\SistemaJuridico\SistemaJuridico-jar\nbproject\build-impl.xml:230: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 0 seconds)
















-----------------------------------------
SEGUE AQUI O CODIGO FONTE

Meu applicationContext

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                    http://www.springframework.org/schema/tx
                            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


  <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="SistemaJuridico-jarPU" />
  </bean>
   
  <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
   
  <bean id="transactionManager"
          class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
  </bean>
   
  <tx:annotation-driven />
       
  <bean id="posicaoDao" class="br.com.sistemajuridico.dao.imp.PosicaoDaoImp" />
   
</beans>


---------------------------------------------

Persistence

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
  <persistence-unit name="SistemaJuridico-jarPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/sistema_juridico"/>
      <property name="javax.persistence.jdbc.password" value="root"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="root"/>
      <property name="eclipselink.logging.level" value="all"/>
    </properties>
  </persistence-unit>
</persistence>

--------------------------------------------

Dao generico interface

package br.com.sistemajuridico.dao;

import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.persistence.Query;

public interface DaoGeneric<T, ID extends Serializable> {

  public Class<T> getObjectClass();
  // Criar um objeto
  public abstract T create(T entity);

  // Editar um objeto
  public abstract T update(T entity);

  // Remover um objeto
  public abstract void delete(T entity);

  // Pegar um objeto pelo ID
  public abstract T getById(int id);

  // Verificar se registro existe
  public abstract boolean exists(int id);

  // Pegar todos objetos e quardar em uma lista
  public abstract List<T> getAll();

  // Criar query personalizadas
  public abstract Query pesq(String query);

  // Criar query personalizadas de SQL
  public abstract Query pesqSql(String query);

  public List<T> listPesqParam(String query, Map<String, Object> params);

  public List<T> listPesqParam(String query, Map<String, Object> params, int maximo, int atual);

  public List<T> listPesq(String query);

  public T pesqParam(String query, Map<String, Object> params);
}

----------------------------------------
Dao generico

package br.com.sistemajuridico.dao.imp;


import br.com.sistemajuridico.dao.DaoGeneric;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(readOnly = true, propagation = Propagation.REQUIRED)
public class DaoGenericImp<T, ID extends Serializable> implements DaoGeneric<T, ID> {

  private EntityManager entityManager;
  private final Class<T> persistentClass;

  @Override
  public Class<T> getObjectClass() {
    return this.persistentClass;
  }

  public DaoGenericImp() {
    this.persistentClass =
            (Class<T>) (((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
  }

  private Class<T> getPersistenceClass() {
    return persistentClass;
  }

  @SuppressWarnings("unchecked")
  @PersistenceContext
  public void setEntityManager(EntityManager entityManager) {
    this.entityManager = entityManager;
  }

  protected EntityManager getEntityManager() {
    if (entityManager == null) {
      throw new IllegalStateException("Erro");
    }
    return entityManager;
  }

  @Override
  @Transactional(readOnly = false, propagation = Propagation.REQUIRED)
  public T create(T entity) {
    getEntityManager().clear();
    getEntityManager().persist(entity);
    return entity;
  }

  @Override
  @Transactional(readOnly = false, propagation = Propagation.REQUIRED)
  public T update(T entity) {
    getEntityManager().merge(entity);
    return entity;
  }

  @Override
  @Transactional(readOnly = false, propagation = Propagation.REQUIRED)
  public void delete(T entity) {
    entity = getEntityManager().merge(entity);
    getEntityManager().remove(entity);
  }

  @Override
  public boolean exists(int id) {
    if (this.getById(id) != null) {
      return true;
    }

    return false;
  }

  @SuppressWarnings("unchecked")
  @Override
  public List<T> getAll() {
    String sql = "SELECT object(o) FROM " + persistentClass.getSimpleName() + " as o ";

    try {
      return getEntityManager().createQuery(sql).getResultList();
    } catch (NoResultException e) {
      System.out.println("Nenhum Retorno");

      return null;
    }
  }

  @SuppressWarnings("unchecked")
  @Override
  public List<T> listPesqParam(String query, Map<String, Object> params) {
    Query q = getEntityManager().createQuery(query);

    for (String chave : params.keySet()) {
      q.setParameter(chave, params.get(chave));
    }

    return q.getResultList();
  }

  @SuppressWarnings("unchecked")
  @Override
  public List<T> listPesqParam(String query, Map<String, Object> params, int maximo, int atual) {
    Query q = getEntityManager().createQuery(query).setMaxResults(maximo).setFirstResult(atual);

    for (String chave : params.keySet()) {
      q.setParameter(chave, params.get(chave));
    }

    return q.getResultList();
  }

  @Override
  public T getById(int id) {
    try {
      T entity = (T) getEntityManager().find(getPersistenceClass(), id);
      return entity;
    } catch (NoResultException e) {
      System.out.println("Nenhum Retorno");
      return null;
    }
  }

  @Override
  public Query pesq(String query) {
    try {
      return getEntityManager().createQuery(query);
    } catch (NoResultException e) {
      System.out.println("Nenhum Retorno");

      return null;
    }
  }

  @Override
  public Query pesqSql(String query) {
    try {
      return getEntityManager().createNativeQuery(query);
    } catch (NoResultException e) {
      System.out.println("Nenhum Retorno");

      return null;
    }
  }

  @SuppressWarnings("unchecked")
  @Override
  public List<T> listPesq(String query) {
    Query q = getEntityManager().createQuery(query);

    return q.getResultList();
  }

  @SuppressWarnings("unchecked")
  @Override
  public T pesqParam(String query, Map<String, Object> params) {
    Query q = getEntityManager().createQuery(query);

    for (String chave : params.keySet()) {
      q.setParameter(chave, params.get(chave));
    }

    try {
      return (T) q.getSingleResult();
    } catch (NoResultException nre) {
      return null;
    }
  }
}
-------------------------------------------------

Interface Posicao

package br.com.sistemajuridico.dao;

import br.com.sistemajuridico.model.Posicao;

public interface PosicaoDao extends DaoGeneric<Posicao, Integer> {

}


------------------------------------------------

Classe Posicao

package br.com.sistemajuridico.dao.imp;
import br.com.sistemajuridico.dao.PosicaoDao;
import br.com.sistemajuridico.model.Posicao;

public class PosicaoDaoImp extends DaoGenericImp<Posicao,Integer> implements PosicaoDao {

}

-------------------------------------------------

Entidade

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.sistemajuridico.model;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Andrei
 */
@Entity
@Table(name = "posicao")
@XmlRootElement
@NamedQueries({
  @NamedQuery(name = "Posicao.findAll", query = "SELECT p FROM Posicao p"),
  @NamedQuery(name = "Posicao.findByIdPosicao", query = "SELECT p FROM Posicao p WHERE p.idPosicao = :idPosicao"),
  @NamedQuery(name = "Posicao.findByDescricao", query = "SELECT p FROM Posicao p WHERE p.descricao = :descricao")})
public class Posicao implements Serializable {
  private static final long serialVersionUID = 1L;
  @Id
  @Basic(optional = false)
  @Column(name = "idPosicao")
  private Integer idPosicao;
  @Basic(optional = false)
  @Column(name = "Descricao")
  private String descricao;

  public Posicao() {
  }

  public Posicao(Integer idPosicao) {
    this.idPosicao = idPosicao;
  }

  public Posicao(Integer idPosicao, String descricao) {
    this.idPosicao = idPosicao;
    this.descricao = descricao;
  }

  public Integer getIdPosicao() {
    return idPosicao;
  }

  public void setIdPosicao(Integer idPosicao) {
    this.idPosicao = idPosicao;
  }

  public String getDescricao() {
    return descricao;
  }

  public void setDescricao(String descricao) {
    this.descricao = descricao;
  }

  @Override
  public int hashCode() {
    int hash = 0;
    hash += (idPosicao != null ? idPosicao.hashCode() : 0);
    return hash;
  }

  @Override
  public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Posicao)) {
      return false;
    }
    Posicao other = (Posicao) object;
    if ((this.idPosicao == null && other.idPosicao != null) || (this.idPosicao != null && !this.idPosicao.equals(other.idPosicao))) {
      return false;
    }
    return true;
  }

  @Override
  public String toString() {
    return "br.com.sistemajuridico.model.Posicao[ idPosicao=" + idPosicao + " ]";
  }

}

-------------------------------------------------

Classe de teste

package br.com.sistemajuridico.dao.imp;


import br.com.sistemajuridico.dao.PosicaoDao;
import br.com.sistemajuridico.model.Posicao;
import java.util.List;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.junit.Test;
import static org.junit.Assert.*;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:**/applicationContext.xml"})
public class PosicaoDaoImpTest {

  private PosicaoDao posicaoDao;
  private Integer id = 1;

  @Autowired
  public void setPosicaoDao(PosicaoDao posicaoDao) {
    this.posicaoDao = posicaoDao;
  }

  @Test
  public void testCreate() {
    Posicao posicao = null;
    posicao = posicaoDao.create(getPosicao());
    assertNotNull(posicao);
    assertEquals(id, posicao.getIdPosicao());
    assertEquals("Teste", posicao.getDescricao());
  }

  @Test
  public void testUpdate() {
    Posicao posicao = posicaoDao.getById(id);
    posicao.setDescricao("Teste2");
    posicao = posicaoDao.update(posicao);
    assertNotNull(posicao);
  }

  private Posicao getPosicao() {
    Posicao posicao = new Posicao();
    posicao.setIdPosicao(id);
    posicao.setDescricao("Teste");
    return posicao;
  }

  @Test
  public void testGetAll() {
    List<Posicao> posicoes = posicaoDao.getAll();
    assertNotNull(posicoes);
    assertEquals(1, posicoes.size());
    assertEquals("Teste2", posicoes.get(0).getDescricao());
  }
 
 
 
  public void testListPesqParam() {
  }
 
  
 
  public void testPesqParam() {
  }
 
 
 
  public void testDelete() {
  }

 
  public void testExists() {
  }



}

------------------------------------------------------
Todos frameworks usados

Spring 3.0.2 do  netbeans 7
hibernate do netbeans 7
eclipselink do netbeans 7
driver mysql do netbeans

Andrei Hirata

Andrei Hirata

Responder

Posts

11/01/2011

Dyego Carmo

Pode estar ocorrendo de ter mais do que uma versao do eclipselink dentro do seu classpath , tentou utlizar o hibernate ?
Responder

Gostei + 0

11/01/2011

Dyego Carmo

Opa !

Agora que eu li direito... tente instalar uma nova versao do JDK e apontala dentro do netbeans , parece que esta instlacao esta corrompida !
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar