Предположим, у меня есть следующее сопоставление классов Домена с устаревшей таблицей, использующее кэш второго уровня только для чтения и имеющее переходное поле:
class DomainObject {
static def transients = ['userId']
Long id
Long userId
static mapping = {
cache usage: 'read-only'
table 'SOME_TABLE'
}
}
У меня проблема, ссылки на DomainObject делятся из-за кэширования первого уровня, и поэтому переходные поля записываются друг на друга. Например,
def r1 = DomainObject.get(1)
r1.userId = 22
def r2 = DomainObject.get(1)
r2.userId = 34
assert r1.userId == 34
То есть r1 и r2 являются ссылками на один и тот же экземпляр. Это нежелательно, я хотел бы кэшировать данные таблицы без обмена ссылками. Есть идеи?
[Изменить]
Теперь, чтобы лучше понять ситуацию, я полагаю, что мой вопрос сводится к следующему: есть ли возможность отключить кэш первого уровня для определенного класса домена, все еще используя кэш второго уровня?
[Изменить]
Поскольку, похоже, нет ясного способа достичь этой цели, мы решили вместо этого изменить дизайн вокруг необходимости.