2012-12-05 85 views
0

我使用MySql,休眠4和hibernate-spatial-4.0-M1。我想簡單地保存和加載實體,節約是全成,但裝載拋出異常:休眠失敗加載空間數據

java.lang.ClassCastException: java.lang.String cannot be cast to [B 
     at org.hibernate.spatial.dialect.mysql.MySQLGeometryValueExtractor.toJTS(MySQLGeometryValueExtractor.java:47) 
     at org.hibernate.spatial.dialect.AbstractJTSGeometryValueExtractor.extract(AbstractJTSGeometryValueExtractor.java:42) 
     at org.hibernate.spatial.dialect.AbstractJTSGeometryValueExtractor.extract(AbstractJTSGeometryValueExtractor.java:37) 
     at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:269) 
     at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:265) 
     at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:238) 
     at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:357) 
     at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2704) 
     at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1541) 
     at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1473) 
     at org.hibernate.loader.Loader.getRow(Loader.java:1373) 
     at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:640) 
     at org.hibernate.loader.Loader.doQuery(Loader.java:850) 
     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289) 
     at org.hibernate.loader.Loader.doList(Loader.java:2438) 
     at org.hibernate.loader.Loader.doList(Loader.java:2424) 
     at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2254) 
     at org.hibernate.loader.Loader.list(Loader.java:2249) 
     at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470) 
     at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355) 
     at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195) 
     at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1248) 
     at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101) 
     at com.mm.dao.hibernate.GeoDAO.getById(GeoDAO.java:33) 
     at com.mm.service.GeoService.getById(GeoService.java:24) 
     at com.mm.service.GeoService$$FastClassByCGLIB$$aeb6c7aa.invoke(<generated>) 
     at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) 
     at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
     at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) 
     at com.mm.service.GeoLocationService$$EnhancerByCGLIB$$f879610f.getById(<generated>) 
     at com.mm.controllers.GeoController.updateGeodata(GeoController.java:48) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHa 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingH 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandle 
     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
     at java.lang.Thread.run(Thread.java:722) 

我的實體:

public class GeoEntity implements java.io.Serializable { 

    private Integer id; 
    private Point geom; 
     //... 
} 

實體的hbm.xml

<property name="geom" type="org.hibernate.spatial.GeometryType"> 
     <column name="geom" sql-type="Geometry" not-null="true" /> 
    </property> 

休眠配置:

<prop key="hibernate.dialect">org.hibernate.spatial.dialect.mysql.MySQLSpatialDialect</prop> 

加載:

(GeoEntity)sessionFactory.getCurrentSession().createQuery("from GeoEntity where id=:id") 
       .setInteger("id", id) 
       .uniqueResult(); 
+0

請分享您的代碼 –

回答

1

這是舊的JDBC驅動程序問題