首先我使用wmsys.wm_concat对某一列进行多行转单行,代码如下
String sql ="select t.depno,wmsys.wm_concat(t.name) as name from tmp t group by t.depno";
SqlQuery query = response.getSession().createSqlQuery(sql);
query.addScalar(name,Hibernate.STRING);
程序运行时报如下错误(只贴关键信息):
org.hibernate.util.jdbcexception:ORA-00911:invalid character
报错原因:
wmsys.wm_concat的返回值类型为CLOB类型,但是这里我用了STRING类型。
解决方法:
to_char(wmsys.wm_concat(column)),将CLOB转换成varchar2类型
select t.depno,to_char(wmsys.wm_concat(t.name)) as name from tmp t group by t.depno;