错误无法转换为内部表示,当java使用getBoolean - JAVA,ORACLE时

时间:2017-09-26 08:23:40

标签: java oracle hibernate jpa

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

   List<TestList> objects = query
                    .setResultTransformer(Transformers.aliasToBean(TestList.class))
                    .setFirstResult(start).setMaxResults(count).list();
在TestList.Class中的

我有像这样的bollean的setter / getter:

Boolean installment;
public Boolean getInstallment() {
    return installment;
}

public void setInstallment(Boolean installment) {
    this.installment = installment;
}

以下是错误的完整日志:

  

ERROR Throwable:84 - 引起:java.sql.SQLException:无法转换为内部表示   2017-09-14 20:10:58 ERROR Throwable:84 - at oracle.jdbc.driver.CharCommonAccessor.getBoolean(CharCommonAccessor.java:185)   2017-09-14 20:10:58 ERROR Throwable:84 - at oracle.jdbc.driver.T4CCharAccessor.getBoolean(T4CCharAccessor.java:697)   2017-09-14 20:10:58 ERROR Throwable:84 - at oracle.jdbc.driver.OracleResultSetImpl.getBoolean(OracleResultSetImpl.java:640)   2017-09-14 20:10:58错误Throwable:84 - at oracle.jdbc.driver.OracleResultSet.getBoolean(OracleResultSet.java:390)

顺便说一下,我使用Oracle 11.2.0.4.0Java 7Hibernate 4.3.9

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

1 个答案:

答案 0 :(得分:2)

转到自定义转换器:

@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;

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