Hibernate AliasToBean Transformer, CHAR (1) в строку: ошибка «ожидаемый тип = java.lang.String» - PullRequest
0 голосов
/ 03 декабря 2018

Я работаю над приложением, в котором AliasToBean Transformer используется для заполнения боба POJO.БД - Oracle.

String sql = "select app.id as \"applicationId\", 
              app.valid_flag as \"validFlag\" from applications_t app";
    query.setResultTransformer(Transformers.aliasToBean(Report.class));     
    // run the query
    List<Report> result = (List<Report>)query.list();

Одно поле представляет собой строку, которая получает свое значение из CHAR(1 CHAR).

public class Report implements Serializable {
    String validFlag;  // With Getter/Setter
    //...
}

. Я получаю ошибку для преобразования CHAR в строку как:следует:

Caused by: org.hibernate.PropertySetterAccessException: IllegalArgumentException occurred 
while calling setter for property [validFlag (expected type = java.lang.String)]; 
target = [com.app.Report@1a89016a], property value = [N] setter of com.app.Report.validFlag
    at ...

Значение свойства CHAR(1) N не может быть автоматически сохранено в строке.Какое решение?

Обратите внимание, что это не бин Table, где я могу сделать @Column(columnDefinition="CHAR").Это пользовательский POJO после преобразования.

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете попробовать cast(app.valid_flag as VARCHAR2(1)) as \"validFlag\" в своем запросе.Или query.addScalar("validFlag", StringType.INSTANCE).list().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...