在hibernate core 3.6.0的org.hibernate.type.descriptor.java.charactertypedescriptor文件中获取java.lang.stringindexoutofboundsexception

7bsow1i6  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(228)

我得到了下面的错误堆栈跟踪。

String index out of range: 0
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(String.java:658)
    at org.hibernate.type.descriptor.java.CharacterTypeDescriptor.wrap(CharacterTypeDescriptor.java:80)
    at org.hibernate.type.descriptor.java.CharacterTypeDescriptor.wrap(CharacterTypeDescriptor.java:34)
    at org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$2.doExtract(VarcharTypeDescriptor.java:61)
    at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:249)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:229)
    at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:330)
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265)
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
    at org.hibernate.loader.Loader.getRow(Loader.java:1355)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
    at org.hibernate.loader.Loader.doQuery(Loader.java:829)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    at org.hibernate.loader.Loader.doList(Loader.java:2533)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    at org.hibernate.loader.Loader.list(Loader.java:2271)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102).

我在代码中使用hibernate-core-3.6.0-final jar。在网上搜索时,建议修改代码如下:

if ( String.class.isInstance( value ) ) {
             final String str = (String) value;
            return Character.valueOf( str.charAt(0) );
          }

应替换为

if ( String.class.isInstance( value ) ) {
             final String str = (String) value;
             if ( str.length() == 0 ) {
                return null;
             }
             return Character.valueOf( str.charAt(0) );
          }

.
我试着这么做。但是做不到。所以我应该降级到hibernate-core-3.5.6-final jar以避免上述异常吗?。会引起什么问题吗?。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题