【问题标题】:Error Fail to convert to internal representation, when java use getBoolean - JAVA,ORACLE错误无法转换为内部表示,当java使用getBoolean - JAVA,ORACLE
【发布时间】:2017-09-26 08:23:40
【问题描述】:

当使用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 设置器/获取器:

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 错误 Throwable:84 - 在 oracle.jdbc.driver.CharCommonAccessor.getBoolean(CharCommonAccessor.java:185) 2017-09-14 20:10:58 错误 Throwable:84 - 在 oracle.jdbc.driver.T4CCharAccessor.getBoolean(T4CCharAccessor.java:697) 2017-09-14 20:10:58 错误 Throwable:84 - 在 oracle.jdbc.driver.OracleResultSetImpl.getBoolean(OracleResultSetImpl.java:640) 2017-09-14 20:10:58 错误 Throwable:84 - 在 oracle.jdbc.driver.OracleResultSet.getBoolean(OracleResultSet.java:390)

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

请帮帮我,谢谢。 抱歉语法不好:)

【问题讨论】:

  • @MaciejKowalski 当我尝试跟踪和调试时,错误发生在 setResultTransformer(Transformers.aliasToBean(TestList.class) 上,我看不到这个函数内的代码,因为这是在休眠状态-core-4.3.9.Final.jar

标签: java oracle hibernate jpa


【解决方案1】:

选择自定义转换器:

@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+。

【讨论】:

  • 太好了,很高兴
猜你喜欢
  • 1970-01-01
  • 2013-11-22
  • 2012-02-04
  • 2016-12-20
  • 2011-08-23
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多