java.sql.SQLException: 流已被关闭

mysql转oracle数据库时,若表中存在long型字段(length>=4096),读取表数据有时会报错“java.sql.SQLException: 流已被关闭” 。
debug之后发现是因为数据库表中存在longtext 类型的数据,oracle没有这种类型。oracle有个等价的类型,叫clob。可参考StackOverflow上的介绍。因此将该字段改为clob类型的就OK了。

用注解的方式:

@Entity
public class domain {
    @Column(length = 4096)
    private String richText;
}

改为

public class domain {
    @Lob
    @Basic(fetch = FetchType.LAZY)
    @Column(columnDefinition = "CLOB", nullable = true)
    private String richText;
}

你可能感兴趣的:(oracle,Hibernate,clob,longtext)