Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当java使用getBoolean-java,ORACLE时,转换为内部表示时出错_Java_Oracle_Hibernate_Jpa - Fatal编程技术网

当java使用getBoolean-java,ORACLE时,转换为内部表示时出错

当java使用getBoolean-java,ORACLE时,转换为内部表示时出错,java,oracle,hibernate,jpa,Java,Oracle,Hibernate,Jpa,在oracle中使用getBoolean获取数据类型char[1 char]时,我有一个错误指出无法转换为内部表示, 当记录是数字(如0-9)时,它将成功,但当记录是字符(如T、F(真、假)或Y、N(是、否)时,则会发生错误。这是我的密码 List<TestList> objects = query .setResultTransformer(Transformers.aliasToBean(TestList.class))

在oracle中使用
getBoolean
获取数据类型char[1 char]时,我有一个错误指出无法转换为内部表示, 当记录是数字(如0-9)时,它将成功,但当记录是字符(如T、F(真、假)或Y、N(是、否)时,则会发生错误。这是我的密码

   List<TestList> objects = query
                    .setResultTransformer(Transformers.aliasToBean(TestList.class))
                    .setFirstResult(start).setMaxResults(count).list();
以下是错误的完整日志:

可抛出错误:84-原因:java.sql.SQLException:无法转换为内部表示 2017-09-14 20:10:58可抛出的错误:84-位于oracle.jdbc.driver.CharCommonAccessor.getBoolean(CharCommonAccessor.java:185) 2017-09-14 20:10:58可抛出的错误:84-位于oracle.jdbc.driver.t4ccharacessor.getBoolean(t4ccharacessor.java:697) 2017-09-14 20:10:58可抛出的错误:84-位于oracle.jdbc.driver.OracleResultSetImpl.getBoolean(OracleResultSetImpl.java:640) 2017-09-14 20:10:58可抛出的错误:84-位于oracle.jdbc.driver.OracleResultSet.getBoolean(OracleResultSet.java:390)

顺便说一句,我使用的是
oracle11.2.0.4.0
java7
hibernate4.3.9

请帮帮我,伙计们,谢谢。
抱歉语法错误:)

使用自定义转换器:

@Converter
public class BooleanConverter implements AttributeConverter<Boolean, String>{
    @Override
    public String convertToDatabaseColumn(Boolean value) {
        if (Boolean.TRUE.equals(value)) {
            return "1";
        } else {
            return "0";
        }
    }
    @Override
    public Boolean convertToEntityAttribute(String value) {
        return "1".equals(value);
    }
}

转换器api来自
javax.persistence
包。您必须使用JPA 2.1+。

@MaciejKowalski当我尝试跟踪和调试时,错误发生在setResultTransformer(Transformers.aliasToBean(TestList.class))上,我看不到此函数中的代码,因为这是insite-hibernate-core-4.3.9.Final.jarGreat,很高兴看到它的id
@Converter
public class BooleanConverter implements AttributeConverter<Boolean, String>{
    @Override
    public String convertToDatabaseColumn(Boolean value) {
        if (Boolean.TRUE.equals(value)) {
            return "1";
        } else {
            return "0";
        }
    }
    @Override
    public Boolean convertToEntityAttribute(String value) {
        return "1".equals(value);
    }
}
@Convert(converter=BooleanConverter.class)
private Boolean installment;