weixin_43944282 2018-12-25 09:00 采纳率: 100%
浏览 2962
已结题

java.io.StreamCorruptedException: invalid stream header: 77327070是什么情况如何解决?

springboot+datajpa+sqlserver报Caused by: invalid stream header: 77327070是什么情况如何解决?

刚接触springboot+jpa的小白,拜求各路大神的帮忙:
开发工具是eclipse:
没写controller层,先用junit测试crud(即增删改查)中其中的修改和删除,不能用,代码如下:
实体编译好后
1.首先JpaRepository层用的完全是继承JpaRepository的借口自带方法,出查询外没用自定义任何修改:

@Repository

@Transactional

public interface sd extends JpaRepository{
Page findAll(Pageable pageable);

}

```2.service 层是:

@Override

@Modifying

@Transactional
public void delete(String pid) {
    // TODO Auto-generated method stub
    cd.deleteById(pid);
}

@Override
public boolean update(sd sf) {
    // TODO Auto-generated method stub
    cd.save(cfb);
    return true;
}

3.测试类中:

 @Test
 @Modifying
 @Transactional
public void deletepro()  {

    cps.delete("fef232");
}   

    @Test
public void querypro() {
    /* int page=1,size=10;
     Sort sort = new Sort(Direction.DESC, "pid");
     Pageable pageable = new PageRequest(page, size, sort);
     System.out.println(cps.findByPages(pageable));*/

}

``4.具体报错为:

org.hibernate.type.SerializationException: could not deserialize
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
.......(太长了懒得粘了省略)

**Caused by:

java.io.StreamCorruptedException: invalid stream header: 77327070
**

at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:866) ~[na:1.8.0_191]
at java.io.ObjectInputStream.(ObjectInputStream.java:358) ~[na:1.8.0_191]
at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.(SerializationHelper.java:309) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.(SerializationHelper.java:299) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:218) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
... 110 common frames omitted

5,配置用的是:application.properties 具体是:

#port is update
server.port=8080
#connection

spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost:1433;DatabaseName=tzc12
spring.datasource.username=sa1
spring.datasource.password=qq
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.hibernate.ddl-auto = update

Naming strategy

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

#controller

spring.mvc.view.prefix=/

spring.mvc.view.suffix=.jsp
#Connection Pool
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false


除外,测试查询方法时junit未报错,但出现了以下情况是什么原因?如何解决:
JpaRepository层看最上面
service层:

@Override

    public Page<sd> findByPages(Pageable pageable) {
        // TODO Auto-generated method stub
        return  cd.findAll(pageable);
    }


@Test

    public void querypro() {

         int page=1,size=10;
         Sort sort = new Sort(Direction.DESC, "pid");
         Pageable pageable = new PageRequest(page, size, sort);
         System.out.println(cps.findByPages(pageable));

    }
    结果出来为:

    Page 2 of 1 containing UNKNOWN instances

    更新后:

    实体类:
    sd为主表,cds为附表,即cds 的主键是sd的外键。

    @Entity
@Table(name="cftbiop")
public class sd  implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 8786038170195933216L;



    @Id
    private  String     pid=(UUID.randomUUID().toString()) ;

    private  String     pname ;         

    private String introduction;

    private  String     marque; 

    private  String     showcase; 

    private String      waytoraise  ;   

    private  int        suppot; 

    private  int        raisefunds  ;

    private  int        goalnum    ;

    private cds showid;

    @ManyToOne
    @JoinColumn(name="showid")  
    public cds getShowid() {
        return showid;
    }

    public void setShowid(CFShowProspecification showid) {
        this.showid = showid;
    }
    private  boolean  homepagedisplay;

    private int price;  

    其余getter,setter省略不粘了,都已getter,setter,

    测试查询方法,把page改为0后,报了和删除,修改一样的错误
  • 写回答

3条回答 默认 最新

  • L星火燎原 2018-12-25 01:33
    关注

    “org.hibernate.type.SerializationException: could not deserialize”
    第一个报错是说你的hibernate反序列化失败了,具体可以这样操作:
    1,ORM映射,你的hibernate映射文件里面的是否和你实体类对应,表的字段是否对应。
    2,实体类是否序列化(实体类implements Serializable接口)。

    “Page 2 of 1 containing UNKNOWN instances”
    这个错误是说你的页码从1开始根本获取不到数据,应该改为0开始。

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于#flink#的问题:关于docker部署flink集成hadoop的yarn,请教个问题flink启动yarn-session.sh连不上hadoop
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题