【发布时间】:2015-10-24 23:27:40
【问题描述】:
我有一个用 grails 2.2.5 编写的应用程序,需要根据我的客户连接 MySQL、Oracle 和 SQL Server。我们有 1000 多个使用不同返回类实例的查询。
例子:
import br.com.aaf.auditoria.*
def query="select distinct tipo from Atividade c join c.tipoAtividade tipo order by tipo.nome"
def ret=Atividade.executeQuery(query)
到目前为止一切顺利,但现在我需要在 oracle 中包含一些 CLOBs 列来扩展 VarChar 4000 中的一些字段。当我这样做时,由于 Oracle 不比较 CLOB 列的问题,这些查询停止工作。
错误:
ORA-00932:不一致的数据类型:预期 - 得到 CLOB
我了解 Grails/Hibernate 使用域类的所有属性来使 sql 发送到数据库并作为该类的实例返回。 情况是我只需要比较或分组域类的 id 来区分,但我需要结果是类的实例而不是 id,所以我不需要更改所有查询.
即使我需要自定义一种方言来捕捉 Hibernate 在 SQL 中转换 HQL 时所做的工作,你们中的任何人都知道改变 HQL 中 distinct 的行为的方法吗?
我的想法是捕获 SQL,将其更改为仅返回和分组实例的 id,并在 Domain 类中执行“get”,然后将其返回给“executeQuery”。
【问题讨论】:
标签: oracle hibernate grails clob