なのでGrailsからクエリを直接実行しようとした場合は注意が必要です。
DISTINCTしなければいいのかというと、そういうわけでもなく、 like は使えるが = は使えないという非常に微妙な状態になります。(Oracle8ではlikeもNGっぽいです)
以下にテストした結果、OKなケースとNGなケースをまとめます。
以下の形のドメインクラス
class Book {
Author author
String title
}
class Author {
static mapping = {
clob type:'text'
}
String clob
}
以下のクエリを実行します。
SELECT DISTINCT a from Author as a // NG
from Author as a WHERE a.clob like '%Clob%' // OK
from Author as a WHERE a.clob = '%Clob%' // NG
SELECT DISTINCT b from Book as b WHERE b.author.clob like '%Clob%' // OK
SELECT DISTINCT b from Book as b WHERE b.author.clob = 'Clob' // NG
Oracleが嫌いになりました :p
0 件のコメント:
コメントを投稿