sto cercando di creare un'istanza di una classe generica in primavera, ma ottengo seguente eccezione:Problema un'istanza di fagioli classe generica nella primavera
inizializzazione dei fagioli non è riuscita; l'eccezione annidata è org.springframework.aop.framework.AopConfigException: Impossibile generare sottoclasse CGLIB della classe [class football.dao.jpa.GenericJpaDAO]: cause comuni di questo problema includono l'uso di una classe finale o di una classe non visibile; l'eccezione annidata è java.lang.IllegalArgumentException: superclasse non ha costruttori nulli, ma senza argomenti è stata data:
Questa è la configurazione XML per container Primavera:
<bean id="clubDAO" class="football.dao.jpa.GenericJpaDAO">
<constructor-arg type="EntityManagerFactory" ref="entityManagerFactory"/>
<constructor-arg type="Class" value="football.model.entities.ClubEntity"/>
<constructor-arg type="String" value="ClubEntity"/>
</bean>
Questa è la classe generica:
public class GenericJpaDAO <T extends HavingID> {
private EntityManager em;
private Class entityClass;
private String entityName;
public GenericJpaDAO(Class entityClass, String entityName,
EntityManagerFactory emFactory) {
this.entityClass = entityClass;
this.entityName = entityName;
em = emFactory.createEntityManager();
}
@Transactional
public void create(T entity) {
em.persist(entity);
}
// more methods
}
Non sono sicuro di cosa potrebbe causare questo. Gradirei qualsiasi idea.
Spring 4 with Objenesis consente il proxy delle classi senza costruttore predefinito (ad esempio: no-arg), vedere https://jira.springsource.org/browse/SPR-3150 – tukushan