次のドメイン クラスがレガシー テーブルにマッピングされ、読み取り専用の第 2 レベル キャッシュを利用し、一時的なフィールドがあるとします。
class DomainObject {
static def transients = ['userId']
Long id
Long userId
static mapping = {
cache usage: 'read-only'
table 'SOME_TABLE'
}
}
問題があります。DomainObject への参照が第 1 レベルのキャッシュのために共有されているため、一時的なフィールドが互いに上書きされています。例えば、
def r1 = DomainObject.get(1)
r1.userId = 22
def r2 = DomainObject.get(1)
r2.userId = 34
assert r1.userId == 34
つまり、r1 と r2 は同じインスタンスへの参照です。これは望ましくありません。参照を共有せずにテーブル データをキャッシュしたいと考えています。何か案は?
[編集]
状況をよりよく理解した今、私の質問は次のように要約できると思います: 特定のドメイン クラスの第 1 レベル キャッシュを無効にしながら、第 2 レベル キャッシュを引き続き使用する方法はありますか?
[編集]
この目標を達成する明確な方法がないように思われるため、代わりにその必要性を中心に再設計することにしました。