国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > PostgreSQL > postgresql错误不良的类型值:long解决方法

postgresql错误不良的类型值:long解决方法

头像

yang

2020-04-14 11:47:4112125浏览 · 0收藏 · 0评论

postgresql错误“org.postgresql.util.PSQLException: 不良的类型值 long ”解决方法:

以下是PostgreSQL抛出例外处的日志片段:

Caused by: org.postgresql.util.PSQLException: 不良的类型值 long : \x0040010346504d4e00000001000003900101000000000000000002800000028001f4007d000202040000000200000000000000000000000000000000000000005041
        at org.postgresql.jdbc.PgResultSet.toLong(PgResultSet.java:2860)
        at org.postgresql.jdbc.PgResultSet.getLong(PgResultSet.java:2114)
        at org.postgresql.jdbc.PgResultSet.getBlob(PgResultSet.java:418)
        at org.postgresql.jdbc.PgResultSet.getBlob(PgResultSet.java:405)
        at org.apache.commons.dbcp.DelegatingResultSet.getBlob(DelegatingResultSet.java:565)
        at org.apache.commons.dbcp.DelegatingResultSet.getBlob(DelegatingResultSet.java:565)
        at org.hibernate.type.descriptor.sql.BlobTypeDescriptor$1.doExtract(BlobTypeDescriptor.java:48)
        at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
        at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:258)
        at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:254)
        at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:244)
        at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:327)
        at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2775)
        at org.hibernate.loader.plan.exec.process.internal.EntityReferenceInitializerImpl.loadFromResultSet(EntityReferenceInitializerImpl.java:305)
        ... 64 more

解决方法:

在最底层的PostgreSQL81Dialect(藏的太深了),在getSqlTypeDescriptorOverride()接口中找到对应的内容,而且发现默认的oid + bigobject方式是在此定义的。于是重写该接口:

@Override  
    public SqlTypeDescriptor getSqlTypeDescriptorOverride(int sqlCode)  
    {  
        SqlTypeDescriptor descriptor;  
        switch (sqlCode)  
        {  
        case Types.BLOB:  
            // Force BLOB binding. Otherwise, byte[] fields annotated  
            // with @Lob will attempt to use  
            // BlobTypeDescriptor.PRIMITIVE_ARRAY_BINDING. Since the  
            // dialect uses oid for Blobs, byte arrays cannot be used.  
            //descriptor = BlobTypeDescriptor.BLOB_BINDING;  
            descriptor = BlobTypeDescriptor.STREAM_BINDING;  
            break;  
        case Types.CLOB:  
            //descriptor = ClobTypeDescriptor.CLOB_BINDING;  
            descriptor = ClobTypeDescriptor.STREAM_BINDING;  
            break;  
        default:  
            descriptor = super.getSqlTypeDescriptorOverride(sqlCode);  
            break;  
        }  
        return descriptor;  
    }

推荐使用二进制数组方式存取LOB,而不是默认的oid + bigobject;

如果抛错信息“不良的类型值”后是long,几乎可断定是LOB调用模式的问题;如果是其它类型,需进一步分析。

如果直接用JDBC,对LOB的调用接口是setBinaryStream()、setCharacterStream()等。

推荐:PostgreSQL教程

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

国产电影一曲二曲三曲爱妃记豆瓣 | 麻花传剧原创MV免费播放小米车| 亲吻姐姐| 韩剧《酒醉热吻》| 父母儿女媳妇一起来| 中村| 白日梦我电视剧免费观看完整版 | 《一滴都不许漏》何泽城林荫| 狼人加鲁鲁兽天赋澳彩心水| 免费B站在线观看人数在哪儿找到| 《厨房韵母2》动漫下线了吗| 美女和男生一起努力的生孩子视频..| 《献身》免费完整版| 咖啡全国十大品牌| 善良的嫂子| 粘液共生1-3集免费观看动漫| 女士穿紧身裸体开裆光滑皮裤| 老阿姨2免费播放电视剧 | 麻花传媒的短视频制作技巧和方法 | 蜜桃| 出门忘穿胸置乳头凸起怎么办 | 天天挨龠中度过BY浮白曲讲什么| 女士泳衣全透明| 他扒开内裤把舌头伸进去| 女被扒开腿狂躁XXXXX视频 | 女人吃男人鸡要多久恢复| 两个男人搞一个女人的心理 | 《妻欲公与媳》免费看| 电影《乳妓》在线观看| 洞洞饿了1-36集全免费| 《性爽2》电影| 美国禁忌| 韩国禁欲系高级感电影| 黑色董丝透视露胸旗袍连衣裙| 九九在线观看免费高清电视剧| 无人区免费观看高清电视剧| 豪放女大兵| 中中漫画免费漫画弹窗入口| 手撕女生衣服名场面| 女人吃男人鸡要多久恢复| 国产-区二区