Oracle10gとGrailsv2.0.1を使用したプロジェクトに取り組んでいます。
Domainクラスのテキスト入力フィールドにCLOBデータ型を使用しようとしていますが、機能していないようです。私の最初の試みは、 GORMについてここで読んだものに基づいていました。ここではtype: 'text'、次の例のように、を使用すると言われています。
class Address {
String number
String postCode
static mapping = {
postCode type: 'text'
}
}
GrailsLONGはそれを私のDBのデータ型にマッピングしましたが、これは望ましくありません
2番目の試みは試してみることでしたtype: 'clob'。これは、DBデータ型をCLOBにするのに効果的でしたが、プロパティ自体が文字列として定義されていたため、クラスキャストエラーが発生しましたString postCode。(私はドキュメントで見たことがないことに注意してください、しかし私はそこで有効な入力であるかもしれないtype:'clob'方言クラスから推測することができました)clob
java.sql.Clobその後、プロパティを、、つまり、として定義しようとしましたClob postCode;が、まったく機能しませんでした。エラーメッセージはありませんが、DBにも何も永続化されていませんでした。
Clobアプローチを維持する最後のステップをString実行しましたが、ゲッター/セッターが一時的な文字列値を永続的なClobフィールドにマップしようとする一時的なプロパティを使用しました。しかし、文字列値をClobに取り込む方法がわかりません。Grailsはエラーをスローしませんが、println()割り当てを試みた後は出力されません。を使って課題を作成しようとしましmyClob.setString(1, theString)たが、成功しませんでした。
簡単に言うと、私のシナリオではClobを使用できないようです。他の誰かがこれを見て、克服できたのではないかと思います。もしそうなら、私が間違っているかもしれないことを教えてもらえますか?
または...Grailsが選択したデータ型をオーバーライドして、強制的にマップpostCode type: 'text'する方法はありCLOBますか?私はHibernateに習熟していないので、方法があればどうすればよいかわかりません。
補足:Grails 1.3.7から2.0.1にアップグレードする前type: 'text'は、実際にはOracleのCLOBにマップされていたと確信しています。したがって、これは2.0.1の新機能である可能性があります。