Posiadanie sprawy w jednej z moich klas domeny, w której przechowujemy pole przejściowe do bazy danych Mongo w hasłach beforeInsert i afterUpdate, które działa idealnie w następujących warunkach: -Jak sprawdzić isDirty ('transient_fieldName') dla zmiennych przejściowych w Grails
- Wstawki działają dobrze bez żadnego problemu.
- Aktualizacje działa dobrze, jeśli jest niemodyfikowana przemijający pole
Problemem jest isDirty działa na właściwości niż przemijające.
Kod jest jak poniżej:
class ResoruceInstance {
def configurationService
Status status
//Transient
Map<String, Object> configuration
static transients = ['configuration']
public Map<String, Object> getConfiguration() {
if(!configuration)
configuration = configurationService.get(id, CollectionConstants.RESOURCE_INSTANCE_IDENTIFIER)
return configuration
}
def afterInsert() {
configurationService.save(id, CollectionConstants.RESOURCE_INSTANCE_IDENTIFIER, configuration)
}
def afterUpdate() {
if(this.isDirty("configuration"))
configurationService.save(id, CollectionConstants.RESOURCE_INSTANCE_IDENTIFIER, configuration)
}
}
Aby poradzić sobie z tym problemem sam stworzyłem isDirtyMongo ('transient_field'). Działa to dobrze do czasu, w którym nieruchoma właściwość jest modyfikowana, jak po nazwieUpdate jest wywoływana tylko dla właściwości przejściowych.
Modified hak jest jak poniżej:
def afterUpdate() {
if(this.isDirtyMongo("configuration"))
configurationService.save(id, CollectionConstants.RESOURCE_INSTANCE_IDENTIFIER, configuration)
}
boolean isDirtyMongo(String property){
//return whether is dirty or not
}
Więc ostateczny pytanie, jak możemy nazwać hak aktualizacji dla nieustalonych modyfikacji polowych, jak również.
Każda pomoc będzie bardzo ceniona.
O ile wiem, pole przejściowe w stanie hibernacji nie trwa tak, że niemożliwe jest poznanie wartości po dołączeniu. W przypadku hibernacji, pole przejściowe jest po prostu pustą rzeczą. – dgregory
Zgadzam się! Ale mam przypadek wielu baz danych, gdzie chcę potwierdzić isDirty również dla zmiennych przejściowych. na przykład isDirty ('config'), gdzie konfiguracja jest przejściowa. –