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の新機能である可能性があります。