Hibernate:保存时java.lang.ClassCastException

时间:2016-05-06 15:03:02

标签: java hibernate

我今天在HIBERNATE遇到一个奇怪的问题,当我尝试将对象保存到数据库时,它给了我java.lang.ClassCastException

以下是错误的堆栈跟踪:

15:57:24,307 DEBUG AnnotationTransactionAttributeSource:106 - Adding transactional method 'createNombreConnexion' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
15:57:24,307 DEBUG AnnotationTransactionAttributeSource:106 - Adding transactional method 'save' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
15:57:24,682 ERROR stderr:71 - java.lang.ClassCastException: java.lang.Long cannot be cast to ma.dataprotect.sensipro.model.NombreConnexion

15:57:24,687 ERROR stderr:71 -  at ma.dataprotect.sensipro.dao.impl.NombreConnexionDaoImpl.save(NombreConnexionDaoImpl.java:30)

15:57:24,687 ERROR stderr:71 -  at ma.dataprotect.sensipro.dao.impl.NombreConnexionDaoImpl.save(NombreConnexionDaoImpl.java:1)

15:57:24,687 ERROR stderr:71 -  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

15:57:24,687 ERROR stderr:71 -  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

15:57:24,692 ERROR stderr:71 -  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

15:57:24,692 ERROR stderr:71 -  at java.lang.reflect.Method.invoke(Method.java:498)

15:57:24,692 ERROR stderr:71 -  at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)

15:57:24,692 ERROR stderr:71 -  at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

15:57:24,697 ERROR stderr:71 -  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

15:57:24,697 ERROR stderr:71 -  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

15:57:24,697 ERROR stderr:71 -  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

15:57:24,697 ERROR stderr:71 -  at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)

15:57:24,702 ERROR stderr:71 -  at com.sun.proxy.$Proxy407.save(Unknown Source)

15:57:24,702 ERROR stderr:71 -  at ma.dataprotect.sensipro.services.impl.NombreConnexionServiceImpl.createNombreConnexion(NombreConnexionServiceImpl.java:28)

15:57:24,702 ERROR stderr:71 -  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

15:57:24,702 ERROR stderr:71 -  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

15:57:24,707 ERROR stderr:71 -  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

15:57:24,707 ERROR stderr:71 -  at java.lang.reflect.Method.invoke(Method.java:498)

15:57:24,707 ERROR stderr:71 -  at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)

15:57:24,707 ERROR stderr:71 -  at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

15:57:24,712 ERROR stderr:71 -  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

15:57:24,712 ERROR stderr:71 -  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

15:57:24,712 ERROR stderr:71 -  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

15:57:24,712 ERROR stderr:71 -  at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)

15:57:24,712 ERROR stderr:71 -  at com.sun.proxy.$Proxy410.createNombreConnexion(Unknown Source)

15:57:24,712 ERROR stderr:71 -  at ma.dataprotect.sensipro.util.LoginBean.login(LoginBean.java:85)

15:57:24,712 ERROR stderr:71 -  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

15:57:24,712 ERROR stderr:71 -  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

15:57:24,717 ERROR stderr:71 -  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

15:57:24,717 ERROR stderr:71 -  at java.lang.reflect.Method.invoke(Method.java:498)

15:57:24,717 ERROR stderr:71 -  at com.sun.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:181)

15:57:24,717 ERROR stderr:71 -  at com.sun.el.parser.AstValue.invoke(AstValue.java:289)

15:57:24,717 ERROR stderr:71 -  at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)

15:57:24,717 ERROR stderr:71 -  at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)

15:57:24,717 ERROR stderr:71 -  at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)

15:57:24,722 ERROR stderr:71 -  at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)

15:57:24,722 ERROR stderr:71 -  at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)

15:57:24,722 ERROR stderr:71 -  at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)

15:57:24,722 ERROR stderr:71 -  at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)

15:57:24,722 ERROR stderr:71 -  at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)

15:57:24,722 ERROR stderr:71 -  at javax.faces.component.UICommand.broadcast(UICommand.java:315)

15:57:24,722 ERROR stderr:71 -  at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)

15:57:24,722 ERROR stderr:71 -  at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)

15:57:24,722 ERROR stderr:71 -  at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

15:57:24,727 ERROR stderr:71 -  at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

15:57:24,727 ERROR stderr:71 -  at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)

15:57:24,727 ERROR stderr:71 -  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)

15:57:24,727 ERROR stderr:71 -  at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)

15:57:24,727 ERROR stderr:71 -  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)

15:57:24,727 ERROR stderr:71 -  at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:78)

15:57:24,727 ERROR stderr:71 -  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)

15:57:24,727 ERROR stderr:71 -  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

15:57:24,732 ERROR stderr:71 -  at ma.dataprotect.sensipro.util.FiltreUTF8.doFilter(FiltreUTF8.java:48)

15:57:24,732 ERROR stderr:71 -  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)

15:57:24,732 ERROR stderr:71 -  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

15:57:24,732 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

15:57:24,732 ERROR stderr:71 -  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)

15:57:24,732 ERROR stderr:71 -  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)

15:57:24,732 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,737 ERROR stderr:71 -  at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

15:57:24,737 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,737 ERROR stderr:71 -  at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)

15:57:24,737 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,737 ERROR stderr:71 -  at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)

15:57:24,737 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,737 ERROR stderr:71 -  at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:139)

15:57:24,737 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)

15:57:24,742 ERROR stderr:71 -  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,742 ERROR stderr:71 -  at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144)

15:57:24,747 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

15:57:24,747 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)

15:57:24,747 ERROR stderr:71 -  at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)

15:57:24,747 ERROR stderr:71 -  at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

15:57:24,747 ERROR stderr:71 -  at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

15:57:24,747 ERROR stderr:71 -  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)

15:57:24,747 ERROR stderr:71 -  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

15:57:24,747 ERROR stderr:71 -  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

15:57:24,747 ERROR stderr:71 -  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

15:57:24,747 ERROR stderr:71 -  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)

15:57:24,747 ERROR stderr:71 -  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

15:57:24,747 ERROR stderr:71 -  at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)

15:57:24,747 ERROR stderr:71 -  at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)

15:57:24,747 ERROR stderr:71 -  at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)

15:57:24,747 ERROR stderr:71 -  at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)

15:57:24,747 ERROR stderr:71 -  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

15:57:24,747 ERROR stderr:71 -  at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)

15:57:24,752 ERROR stderr:71 -  at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)

15:57:24,752 ERROR stderr:71 -  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

15:57:24,752 ERROR stderr:71 -  at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)

15:57:24,752 ERROR stderr:71 -  at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)

15:57:24,752 ERROR stderr:71 -  at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)

15:57:24,752 ERROR stderr:71 -  at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)

15:57:24,752 ERROR stderr:71 -  at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)

15:57:24,752 ERROR stderr:71 -  at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)

15:57:24,752 ERROR stderr:71 -  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

15:57:24,752 ERROR stderr:71 -  at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)

15:57:24,752 ERROR stderr:71 -  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

15:57:24,752 ERROR stderr:71 -  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

15:57:24,752 ERROR stderr:71 -  at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284)

15:57:24,752 ERROR stderr:71 -  at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263)

15:57:24,752 ERROR stderr:71 -  at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)

15:57:24,752 ERROR stderr:71 -  at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174)

15:57:24,752 ERROR stderr:71 -  at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)

15:57:24,757 ERROR stderr:71 -  at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)

15:57:24,757 ERROR stderr:71 -  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

15:57:24,757 ERROR stderr:71 -  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

15:57:24,757 ERROR stderr:71 -  at java.lang.Thread.run(Thread.java:745)

这是有问题的实体:

package ma.dataprotect.sensipro.model;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@SuppressWarnings("serial")
@Entity
@Table(name = "nombre_connexion")
public class NombreConnexion implements java.io.Serializable{

    private Long id;
    private Organism organism;
    private Date dateConnexion;
    private Long nombreConn;

    public NombreConnexion() {
        super();
        // TODO Auto-generated constructor stub
    }

    public NombreConnexion(Organism organism, Date dateConnexion,
            Long nombreConnexion) {
        super();
        this.organism = organism;
        this.dateConnexion = dateConnexion;
        this.nombreConn= nombreConnexion;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_organism", nullable = false)
    public Organism getOrganism() {
        return organism;
    }

    public void setOrganism(Organism organism) {
        this.organism = organism;
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "date_connexion", unique=true, nullable = false)
    public Date getDateConnexion() {
        return dateConnexion;
    }

    public void setDateConnexion(Date dateConnexion) {
        this.dateConnexion = dateConnexion;
    }

    @Column(name = "nombre_connexion", nullable = false)
    public Long getNombreConn() {
        return nombreConn;
    }

    public void setNombreConn(Long nombreConn) {
        this.nombreConn = nombreConn;
    }
}

通用保存方法:

@SuppressWarnings("unchecked")
    public T save(T t) {
        return (T) getSessionFactory().getCurrentSession().save(t);
    }

生成问题的代码:

nombreConnexion = new NombreConnexion();
                                        nombreConnexion.setOrganism(user.getOrganism());
nombreConnexion.setDateConnexion(new Date());
nombreConnexion.setNombreConn((long) 1);
System.out.println(nombreConnexion);
                                        nombreConnexionService.createNombreConnexion(nombreConnexion);

已编辑:nombreConnexionServiceImpl.createNombreConnexion(nombreConnexion)的代码[没什么重要!]

public void createNombreConnexion(NombreConnexion nombreConnexion) {

    nombreConnexionDao.save(nombreConnexion);

}

编辑2(我希望这会有所帮助):我将id的类型更改为Integer,现在错误是:

16:30:46,818 ERROR stderr:71 - java.lang.ClassCastException: java.lang.Integer cannot be cast to ma.dataprotect.sensipro.model.NombreConnexion

我们正在使用春天和冬眠,一切都很好,我不明白可能是什么问题。

1 个答案:

答案 0 :(得分:4)

Hibernate会话的save()方法返回的Serializable对象是对象的ID("生成的标识符"),而不是对象本身。因此,保存方法中的转换为(T)失败。更改返回类型或返回保存的对象。