V súčasnosti pracujem na projekte grails, kde musím zmapovať staršiu databázu s GORMom.
Môj problém je teraz, že po uložení entity sa stav stĺpcov, ktoré boli automaticky generované, v entite neodráža.
Viem, že to môžem urobiť entity.refresh()
vynútiť opätovné naloženie celého subjektu z. \ tdatabáz. Nemyslím si však, že je to životaschopné riešenie, pretože takéto scenáre by sa mali spracúvať transparentne.
Viem, že v režime spánku existuje a @Generated(GenerationTime.INSERT)
anotácia, ktorá robí presne to, čo chcem robiť.
Existuje rovnaký spôsob, ako to urobiť s GORMom?
odpovede:
0 pre odpoveď č. 1Nemyslím si, že GORM to podporuje natívne (ale mal by záujem, ak by iná odpoveď mohla ukázať spôsob!), Ale dokumentáciu tu: http://docs.grails.org/latest/ref/Domain%20Classes/refresh.html naznačuje, že osvieženie je skutočne správny prístup.
Môžete ju kombinovať s podporovanými udalosťami(afterInsert a afterUpdate by mali pracovať pre vás) na obnovenie vášho objektu. To nie je úplne transparentné, ale je aspoň úplne obsiahnuté v objekte vašej domény.
// I didn"t actually test this but it should work like this, or similar.
//Put the method in your domain object itself and it will be called automatically.
def afterInsert(){
this.refresh()
}