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

标签 java oracle hibernate jpa

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

   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 - Caused by: java.sql.SQLException: Fail to convert to internal representation 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 ERROR Throwable:84 - at oracle.jdbc.driver.OracleResultSet.getBoolean(OracleResultSet.java:390)

顺便说一句,我使用Oracle 11.2.0.4.0 , Java 7 , Hibernate 4.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);
    }
}

然后在您的实体中:

@Convert(converter=BooleanConverter.class)
private Boolean installment;

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

关于java - 当java使用getBoolean时,错误无法转换为内部表示 - JAVA,ORACLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46421333/

相关文章:

java.sql.SQLIntegrityConstraintViolationException : Duplicate entry '0' for key 'PRIMARY'

java - org.h2.jdbc.JdbcSQLException : Column count does not match when it does

java - Spring - Quartz 不执行作业类

java - 在接口(interface)上使用通配符

java - spring mvc tomcat错误

java - Spring NamedParameterJdbcTemplate batchUpdate - 一次错误插入导致整个批处理失败

oracle - 从 ADO.NET 调用存储过程时,不能将类型为 NVarChar 的 OracleParameter 与输出的 ParameterDirection 一起使用

Java FreeMarker : Replacing a ${variable} with a collection instead of an instance of an object

java - 如何将数据从Adapter内的onBindViewHolder传递到Tab

java - 使用 hibernate 标准查询 CLOB 列