<!-- 根据指定的信息包递归查询所有子信息包 --> <sql-query name="queryChildInfoPacks"> <!-- DB2 --> <!-- <![CDATA[ with temptab(pack_id, seq, name, eff_Date, exp_date, pack_level, parent_pack_id, sts, mean) as ( select pack_id, seq, name, eff_Date, exp_date, pack_level, parent_pack_id, sts, mean from info_pack where pack_id=:aaa union all select son.pack_id pack_id, son.seq seq, son.name name, son.eff_Date eff_date, son.exp_date exp_date, son.pack_level pack_level, son.parent_pack_id parent_pack_id, son.sts sts, son.mean mean from info_pack son ,temptab parent where son.parent_pack_id = parent.pack_id ) select {a.*} from temptab a; ]]> --> <!-- ORACLE --> <![CDATA[ select {a.*} from info_pack a start with a.parent_pack_id=:aaa connect by prior a.pack_id=a.parent_pack_id ]]> <return alias="a" class="cn.com.samueli.cuv.pojos.InfoPack"/> </sql-query>
问题描述:
上面的代码是在实际应用递归查询时,配置在Hibernate的POJO配置文件中的一个查询,DB2没有问题,而ORACLE语句在Java代码中执行时报错:ORA-00911: 无效字符?
原因分析:
原因是在针对Oracle的SQL语句末尾加上了分号的缘故,去掉就OK了。对于DB2中不存在这个问题。