休眠别名到豆类转换器,CHAR(1) 到字符串:"expected type = java.lang.String"错误



我正在开发一个应用程序,其中使用AliasToBean Transformer来填充POJO bean。数据库是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 ...

NCHAR(1)属性值无法自动存储在字符串中。解决方案是什么?

请注意,这不是一个可以在其中执行@Column(columnDefinition="CHAR")的Tablebean。这是一个经过转换的自定义POJO。

您可以在查询中尝试cast(app.valid_flag as VARCHAR2(1)) as "validFlag"。或query.addScalar("validFlag", StringType.INSTANCE).list()

相关内容

最新更新