Hibernate:无法反序列化 - 无效的流标头

2024-02-26

关于如何解决此错误有什么想法吗?我将 Spring JPA 与 Hibernate 一起使用。下面是必要的详细信息。

实体类别1:

@Entity
@Table(name = "ways")
@TypeDef(name = "hstore", typeClass = HstoreUserType.class)
@Cacheable
public class Way {

    /**
     * Primary key for the row in table.
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    /**
     * The ID to represent it across the system.
     * Used for preserving historical information. 
     */
    @Column(name = "way_id")
    private Long wayId;

    /**
     * The version of the way this Object represents. 
     */
    @Column(name = "version")
    private Integer version;


    /**
     * The {@link User} that edited this version. 
     */
    @OneToOne
    @PrimaryKeyJoinColumn(name = "user_id")
    private User user;

    /**
     * Timestamp when this version of the Way was edited.
     */
    @Column(name = "tstamp")
    @Temporal(TemporalType.TIMESTAMP)
    private Date timestamp;

    /**
     * The changeset that this version of the way belongs to. 
     */
    @Column(name = "changeset_id")
    private Long changesetId;

    /**
     * All the tags this Way contains. 
     */
    @Type(type = "hstore")
    @Column(name = "tags", columnDefinition = "hstore")
    private Object2ObjectOpenHashMap<String, String> tags = new Object2ObjectOpenHashMap<String, String>(); 

    @Column(name = "bbox")
    private Geometry bbox;

    @Column(name = "linestring")
    private Geometry linestring;

    @Column(name = "nodes")
    private Long[] nodes;

    // getters and setters
}

用户的实体类:

@Entity
@Table(name = "users")
@Cacheable
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @Column(name = "name", unique = true)
    private String name;

    // getters and setters

}

和堆栈跟踪:

堆栈跟踪非常大。我将整个堆栈跟踪粘贴到下面以供参考和快速TL;DR:

javax.persistence.PersistenceException: org.hibernate.type.SerializationException: could not deserialize
Caused by: org.hibernate.type.SerializationException: could not deserialize
Caused by: java.io.StreamCorruptedException: invalid stream header: 30313033

完整的堆栈跟踪如下:

javax.persistence.PersistenceException: org.hibernate.type.SerializationException: could not deserialize
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361)
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289)
        at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:261)
        at org.hibernate.ejb.criteria.CriteriaQueryCompiler$3.getResultList(CriteriaQueryCompiler.java:260)
        at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:250)
        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:606)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFac
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySuppo
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeReava:92)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at com.sun.proxy.$Proxy36.findAll(Unknown Source)
        at com.osmrecommend.persistence.service.WayPersistenceServiceImpl.getAllWays(WayPersistenceServiceImpl.java:32)
        at com.osmrecommend.dao.WayDAO.getAllWays(WayDAO.java:37)
        at com.osmrecommend.cbf.TFIDFModelBuilder.get(TFIDFModelBuilder.java:90)
        at com.osmrecommend.cbf.TFIDFModelBuilder.get(TFIDFModelBuilder.java:36)
        at org.grouplens.grapht.util.MemoizingProvider.get(MemoizingProvider.java:59)
        at org.grouplens.lenskit.inject.StaticInjector.instantiate(StaticInjector.java:130)
        at org.grouplens.lenskit.inject.StaticInjector.apply(StaticInjector.java:137)
        at org.grouplens.lenskit.inject.StaticInjector.apply(StaticInjector.java:47)
        at org.grouplens.lenskit.eval.traintest.ComponentCache$NodeInstantiator.call(ComponentCache.java:166)
        at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4792)
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257)
        at com.google.common.cache.LocalCache.get(LocalCache.java:4000)
        at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4789)
        at org.grouplens.lenskit.eval.traintest.ComponentCache$Instantiator.apply(ComponentCache.java:126)
        at org.grouplens.lenskit.eval.traintest.ComponentCache$Instantiator.apply(ComponentCache.java:104)
        at org.grouplens.lenskit.inject.RecommenderInstantiator$1.apply(RecommenderInstantiator.java:109)
        at org.grouplens.lenskit.inject.RecommenderInstantiator$1.apply(RecommenderInstantiator.java:99)
        at org.grouplens.lenskit.inject.RecommenderInstantiator.replaceShareableNodes(RecommenderInstantiator.java:188)
        at org.grouplens.lenskit.inject.RecommenderInstantiator.instantiate(RecommenderInstantiator.java:99)
        at org.grouplens.lenskit.eval.traintest.LenskitEvalJob.buildRecommender(LenskitEvalJob.java:74)
        at org.grouplens.lenskit.eval.traintest.TrainTestJob.runEvaluation(TrainTestJob.java:117)
        at org.grouplens.lenskit.eval.traintest.TrainTestJob.call(TrainTestJob.java:101)
        at org.grouplens.lenskit.eval.traintest.JobGraph$JobNode.call(JobGraph.java:116)
        at org.grouplens.lenskit.eval.traintest.JobGraph$JobNode.call(JobGraph.java:102)
        at org.grouplens.lenskit.util.parallel.SequentialTaskGraphExecutor.execute(SequentialTaskGraphExecutor.java:37)
        at org.grouplens.lenskit.eval.traintest.TrainTestEvalTask.runEvaluations(TrainTestEvalTask.java:468)
        at org.grouplens.lenskit.eval.traintest.TrainTestEvalTask.perform(TrainTestEvalTask.java:398)
        at org.grouplens.lenskit.eval.traintest.SimpleEvaluator.call(SimpleEvaluator.java:313)
        at com.osmrecommend.app.OSMRecommendEval.main(OSMRecommendEval.java:94)
Caused by: org.hibernate.type.SerializationException: could not deserialize
        at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:262)
        at org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:306)
        at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:131)
        at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:117)
        at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:39)
        at org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:67)
        at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:65)
        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:2695)
        at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1552)
        at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1484)
        at org.hibernate.loader.Loader.getRow(Loader.java:1384)
        at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:640)
        at org.hibernate.loader.Loader.doQuery(Loader.java:856)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
        at org.hibernate.loader.Loader.doList(Loader.java:2463)
        at org.hibernate.loader.Loader.doList(Loader.java:2449)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2279)
        at org.hibernate.loader.Loader.list(Loader.java:2274)
        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:196)
2014-04-13 17:35:49 INFO  persistence.service.WayPersistenceServiceImpl:37 - All ways fetched in 331s
        at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1115)
        at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
        at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:252)
        ... 51 more
Caused by: java.io.StreamCorruptedException: invalid stream header: 30313033
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299)
        at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:328)
        at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:318)
        at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:237)
        ... 78 more

UPDATE:

我将 Ways 实体类更新为以下内容,但仍然出现错误:

@Entity
@Table(name = "ways")
@Cacheable
public class Way implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -7941769011539363185L;

    /**
     * Primary key for the row in table.
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    /**
     * The ID to represent it across the system.
     * Used for preserving historical information. 
     */
    @Column(name = "way_id")
    private Long wayId;

    /**
     * The version of the way this Object represents. 
     */
    @Column(name = "version")
    private Integer version;


    /**
     * The {@link User} that edited this version. 
     */
    @OneToOne
    @PrimaryKeyJoinColumn(name = "user_id")
    private User user;

    /**
     * Timestamp when this version of the Way was edited.
     */
    @Column(name = "tstamp")
    @Temporal(TemporalType.TIMESTAMP)
    private Date timestamp;

    /**
     * The changeset that this version of the way belongs to. 
     */
    @Column(name = "changeset_id")
    private Long changesetId;

    /**
     * All the tags this Way contains. 
     */
    @Column(name = "tags")
    private String tags; 

    @Column(name = "bbox")
    private Geometry bbox;

    @Column(name = "linestring")
    private Geometry linestring;

    @Column(name = "nodes")
    @ElementCollection(targetClass=Long.class)
    private List<Long> nodes;

对于其他有相同错误的人(不回答这个确切的问题)

由于类型字段,我在 hibernate 4.3 和 5.0.5 中遇到了此错误java.time.LocalDateTime,我有几个实体使用 LocalDateTime,但只有其中一个导致了问题,我不知道为什么。

通过添加以下依赖项修复了该问题:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>${hibernate.version}</version>
</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate:无法反序列化 - 无效的流标头 的相关文章

随机推荐

  • 如何播放组合声音,就像从一群发声物体发出的声音一样

    假设我有 100 个 squeaker 类的实例 每个 吱吱声 物体都能够单独发出吱吱声 每个squeaker实体使用相同的 mp3资源 当所有吱吱声一起出现在屏幕上时 例如作为小角色 我希望它们都大约 但不完全 同时发出吱吱声 以便将它们
  • 逆时针旋转矩阵M*N的每个环

    我无法旋转M N逆时针方向的矩阵 我的代码可以正常工作3 3矩阵 但是当我尝试任何其他情况时 它不起作用假设我正在这样做4 4矩阵 则只有外部元素旋转 内部 4 个元素 即 6 7 10 11 不旋转 我的输入是 1 16 个数字4 4 m
  • mvccontrib grid - 如何添加 id

    我想向我构建的 mvccontrib 网格的 tr 元素添加一个 id tr tr tr tr 因此 如果表包含 10 行 则 id 为 0 到 9 一种方法是向我的实体添加一个附加项目来存储该值 然后将其创建为隐藏列 并将 id 作为该项
  • 有没有更快的方法来生成 .csv 文件作为 groupby 和循环的替代方法?

    我必须生成数十个包含数百万行和数十列的 csv 文件 我目前正在通过执行以下操作来生成文件groupby列 A 和 B 并循环动态生成文件to csv 下面是我正在尝试做的事情的一个例子 有没有更快的技术 我的实际数据帧需要 10 多分钟才
  • Visual Studio 中的版本控制

    我目前正在开发一个大型项目 即将做出一些重大更改 并且正在寻找一种方法来 备份 我之前的工作 Visual Studio 中是否有内置功能可用于版本控制 该项目仅由我开发 并且不使用 Team Foundation Server 这是我大部
  • 如何使用带有要价和出价的 pandas 数据框计算成交量加权平均价格 (VWAP)?

    如果我的表格如下所示 如何创建另一个名为 vwap 的列来计算 vwap time bid size bid ask ask size trade trade size phase 0 2019 01 07 07 45 01 064515
  • 如何获取 JDesktopPane 中 JInternalFrames 的 z 顺序

    如何获取 JDesktopPane 内所有 JInternalFrame 的 z 顺序 层深度 似乎没有直接的方法 有任何想法吗 虽然我还没有尝试过这个 Container http java sun com javase 6 docs a
  • R Quantmod::getFinancials

    我正在使用quantmod包裹 我有一个这样的股票向量 c AAPL GOOG IBM GS AMZN GE 我想创建一个函数来计算股票的息税前利润 营业收入 总收入 因此 对于给定的股票 我使用以下仅适用于 GE 的代码 前提是在股票代码
  • j2me 应用程序中出现 OutOfMemoryError

    我正进入 状态OutOfMemoryException在 J2ME 应用程序中 我怎样才能找到导致此错误的原因 以及如何防止出现此错误 我发出一个http请求 当请求未完成时 屏幕会显示加载图像 就像浏览器在加载页面时显示的那样 这是通过创
  • 设置 NSAttributed String 属性会覆盖子字符串属性

    我创建了一个可变字符串 看起来像 测试 MeIn 绿色 颜色 不同 绿色 颜色 颜色 NSMutableAttributedString mutableText NSMutableAttributedString alloc initWit
  • 如何访问 Tumblr API 照片数据源(即所有照片、整个档案)?

    我目前正在用 PHP 开发一个项目 该项目通过 Tumblr API 使用我的 api key 连接到 Tumblr 照片博客 以访问指定 Tumblr 照片博客中发布的照片 我使用 Tumblr API 文档开始 并交叉引用了许多网站 包
  • 您可以使用 JavaScript 将多个图像合并为一个图像吗?

    我想知道是否有一种方法可以仅使用 JavaScript 将多个图像组合成单个图像 这是 Canvas 能够做到的吗 效果可以通过定位来完成 但是可以将它们组合成单个图像进行下载吗 2008 年 10 月 1 日更新 感谢您的建议 我正在帮助
  • 使用 UIViewAnimationOptionTransitionCurlDown 自定义 Segue

    我想创建一个自定义 Segue 来用卷曲动画交换 ViewController 但我找不到方法 void 执行此操作会是什么 我有这个 void perform UIViewController dst self destinationVi
  • 为什么 AudioRecord.getMinBufferSize 返回 ERROR_BAD_VALUE (-2)?

    我正在 Samsung Galaxy S i9000 上对此进行测试 int sampleRate 44100 int bufferSize AudioRecord getMinBufferSize sampleRate AudioForm
  • JSON-lib 转义/保留字符串

    我正在使用 Java 的 JSON lib 库http json lib sourceforge net http json lib sourceforge net 我只想添加看起来像 JSON 的简单字符串 但我不希望库自动找出它可能是
  • 使用“全选”时排除禁用的复选框

    我在表中有带有标签的复选框 我在表 全选 之外添加了一个复选框 ID 为 chkbox 现在下面的代码工作正常 这是 选择和取消选择表中的所有复选框 现在有一些页面由于业务逻辑而禁用了一些复选框 我希望这些复选框不应该受到影响
  • Java 创建一个新文件,或者覆盖现有文件

    我想要实现的是创建一个文件 无论该文件是否存在 我尝试使用File createNewFile 但这只会创建该文件 如果该文件尚不存在 我应该使用File delete 进而File createNewFile 或者有更清晰的方法吗 Fil
  • 如何让工具提示在 IE 中显示时间更长

    我得到以下内容 span title 在 Firefox 中 工具提示会一直停留在那里 直到鼠标移动 但在 IS 中 它只停留大约 5 秒 然后消失 有没有办法让它持续更久 没有内置的浏览器工具提示 不 有大量类似工具提示的 UI 组件使用
  • 关于jsp源代码

    我开发了一个非常大的 Web 应用程序 如果我需要在 JSP 页面中进行任何更改 则需要花费太多时间来查找 JSP 页面 链接 操作等 那么 是否有任何工具或技术可以让我直接获取该特定 JSP 页面的代码 我认为 查看来源 是不同的 它只显
  • Hibernate:无法反序列化 - 无效的流标头

    关于如何解决此错误有什么想法吗 我将 Spring JPA 与 Hibernate 一起使用 下面是必要的详细信息 实体类别1 Entity Table name ways TypeDef name hstore typeClass Hst