我正在开发一个应用程序,其中使用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 ...
N
的CHAR(1)
属性值无法自动存储在字符串中。解决方案是什么?
请注意,这不是一个可以在其中执行@Column(columnDefinition="CHAR")
的Tablebean。这是一个经过转换的自定义POJO。
您可以在查询中尝试cast(app.valid_flag as VARCHAR2(1)) as "validFlag"
。或query.addScalar("validFlag", StringType.INSTANCE).list()
。