2012-03-06 13 views
5

Rozważam przeniesienie mapowania trwałości mojej aplikacji z plików hibernacji hbm na obiekty domeny Grails. Schemat nie jest zgodny z wieloma konwencjami nazewnictwa kolumn Grails, w tym nazwami kolumn kompozycji. To, co chciałbym zrobić, to:Jak zmienić odwzorowania kolumn w Grails

class Foo{ 
    Bar bar 
    static embedded = ['bar'] 
    static mapping = { 
     bar.baz column:'baz' 
     bar.quz column:'qux' 
    } 
} 

class Bar{ 
    String baz, qux 
} 

Dla tego numeru jest jira. Niestety jest otwarty od prawie dwóch lat bez żadnych zmian. Czy istnieje sposób obejścia tego kolumny z brakującymi zmianami w db?

Odpowiedz

1

Uważam, że jedynym sposobem jest obecnie (grails 2.1) umieścić mapowanie w barze,

class Bar { 
    String bar, quz 

    static mapping = { 
     baz column: "baz" 
     quz column: "quz" 
    } 
} 
2

Zamiast zmienna osadzone tworzyć niestandardowe hibernacji UserType dla swojej klasy Bar. Można wtedy mapę, która niestandardowy typ na dowolny nazwy kolumn, które chcesz jak:

static mapping = { 
    bar type: BarUserType, { 
     column name: "bar" 
     column name: "quz" 
    } 
} 
0

Rozwiązaniem znalazłem jest użycie @ grails.util.Mixin zamiast osadzania:

@grails.util.Mixin(Bar) 
class Foo{ 
    static mapping = { 
     baz column:'bazz' 
     quz column:'quxx' 
    } 
} 

class Bar{ 
    String baz, qux 
} 
Powiązane problemy