У меня есть проект отлично работает с Hibernate 4.3.5-Final в Glassfish 4, но с Hibernate 4.3.6-Final произошло ClassCastException, когда Hibernate выполнил запрос.ClassCastException в Hibernate 4.3.6-Final
Мой POJO и мой дао
@Entity
@Table(name = "usuario")
@SequenceGenerator(allocationSize = 1, name = "seq_usuario", sequenceName = "seq_usuario")
public class Usuario extends AbstractModel {
// some attributes
}
@MappedSuperclass
public abstract class AbstractModel implements Model<Long> {
// some attributes
}
@Stateful(name = "usuarioDao")
@Named
@UsuarioDaoQualifier
@LocalBean
public class UsuarioDaoImpl extends GenericHibernateDao<Usuario, Serializable> implements UsuarioDao, Serializable {
private static final long serialVersionUID = -2133771624984338700L;
@Override
public Class<Usuario> getPersistentClass() {
return Usuario.class;
}
}
public abstract class GenericHibernateDao<T extends AbstractModel, K extends Serializable> implements Serializable, GenericDao<T, K> {
private static final long serialVersionUID = -8773809458616814954L;
@PersistenceContext(type = PersistenceContextType.EXTENDED)
protected EntityManager em;
protected Session session;
public Session getSession() {
if (session == null) {
if (em.getDelegate() instanceof org.hibernate.ejb.HibernateEntityManager) {
session = ((org.hibernate.ejb.HibernateEntityManager) em.getDelegate()).getSession();
} else {
session = (org.hibernate.Session) em.getDelegate();
}
}
return session;
}
@SuppressWarnings("unchecked")
@Override
public List<T> findAll() {
Criteria criteria = getSession().createCriteria(this.getPersistentClass());
return criteria.list();
}
@SuppressWarnings({ "unchecked" })
@Override
public T findOneByExample(final T entity) {
Criteria criteria = getSession().createCriteria(this.getPersistentClass());
criteria.add(Example.create(entity).enableLike(MatchMode.ANYWHERE).ignoreCase());
return (T) criteria.uniqueResult();
}
@SuppressWarnings({ "unchecked" })
protected T findUniqueResult(final DetachedCriteria dc, final String cacheRegion) {
Criteria criteria = dc.getExecutableCriteria(this.getSession());
return (T) criteria.uniqueResult();
}
@SuppressWarnings("unchecked")
public Class<T> getPersistentClass() {
return (Class<T>) ((ParameterizedType).getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
}
И, наконец, стек в результате запроса:
причиненном: java.lang.ClassCastException: com.pnp.teste.projetotestehibernate .Usuario не может быть добавлен в com.pnp.teste.projetotestehibernate.AbstractModel в com.pnp.teste.projetotestehibernate.GenericHibernateDao.findUniqueResult (GenericHibernateDao.java:191) at com.pnp.teste.projetot estehibernate.GenericHibernateDao.findUniqueResult (GenericHibernateDao.java:181) на com.pnp.teste.projetotestehibernate.UsuarioDaoImpl.buscarPorUsername (UsuarioDaoImpl.java:36) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в sun.reflect .NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:606) в org.glassfish .ejb.security.application.EJBSecurityManager.runMethod (EJBSecurityManager.java:1081) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke (EJBSecurityManager.java:1153) at com.sun.ejb.containers.BaseContainer .invokeBeanMethod (BaseContainer.java:4695)на com.sun.ejb.EjbInvocation.invokeBeanMethod (EjbInvocation.java:630) в com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext (InterceptorManager.java:822) в com.sun.ejb.EjbInvocation. перейти (EjbInvocation.java:582) на org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke (AbstractEJBRequestScopeActivationInterceptor.java:46) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:606) в com.sun.ejb.containers .interceptors.AroundInvokeInterceptor .intercept (InterceptorManager.java:883) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext (InterceptorManager.java:822) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept (InterceptorManager.java : 369) at com.sun.ejb.containers.BaseContainer .__ intercept (BaseContainer.java:4667) at com.sun.ejb.containers.BaseContainer.intercept (BaseContainer.java:4655) at com.sun.ejb .containers.EJBLocalObjectInvocationHandler.invoke (EJBLocalObjectInvocationHandler.java:212)
Что случилось? Это ошибка спящего режима?
ту же ошибку с спящем 4.3.7.Final – rmpestano
вероятно, связанные с: https: // спящий режим. atlassian.net/browse/HHH-9434 – rmpestano