2

免责声明:这只是我犯的一个愚蠢的错误。没有关闭它,因为也许其他人做了同样的事情并且可能会发现它有用。

两张表:

COR_RADICADO_OFICIO:
- num_radicado (pk)
- ano_radicado (pk)

(我知道,复合 pk 是邪恶的,但它是一个遗留数据库,而不是我的设计;))

COR_RESPUESTA_OFICIO:
- num_radicado (text)(fk)
- ano_radicado (number)(fk)
- requiere_respuesta (number)

休眠状态:

createSQLQuery("select * from COR_RADICADO_OFICIO where REQUIERE_RESPUESTA = 399 " +
"and concat(concat(num_radicado , '_'),  ano_radicado) not  in "+ 
"(select concat(concat(num_radicado , '_), ano_radicado) from COR_RESPUESTA_OFICIO);" );

如果我直接在 oracle 上执行此查询,它可以正常工作,但是休眠会抛出

java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

尝试用“||”替换“concat”函数 并得到同样的错误。

任何想法如何解决这个问题?(除了创建视图)。

4

1 回答 1

7

尝试删除分号可能吗?您得到的错误不是说无效的 SQL,而是说无效的字符,这是完全不同的东西。

于 2013-01-09T19:37:04.743 回答