2011-12-30 17 views
9

Próbuję mapować (małą część) bazy danych Joomla MySQL za pomocą GORM z Grails 2.0.mapa istniejącej bazy danych mysql z gorm

Czytam książkę o argumencie (Grails) i szukam w internecie artykułu technicznego, ale nadal potrzebuję dobrego odniesienia do mapowania typów Groovy/Java na pola MySQL.

Zaczynam od prostej tabeli jos_bannerclient.

class BannerClient { 
    String name 
    String contact 
    String email 
    String notes 
    String editor = '' 

    static constraints = { 
     name(blank:false) 
     contact(nullable:true) 
     email(nullable:true) 
     notes(nullable:true) 
     editor(nullable:true) 
    } 

    static mapping = { 
     datasource 'joomla' 
     table 'jos_bannerclient' 
     id column:'cid', type:'int' 
     notes column:'extrainfo', type:'text' 
     version false 
    } 
} 

W tym momencie generowany jest zapis w bazie danych, ale jeśli mogę zapisać domenę z failOnError:true otrzymuję ten błąd: java.lang.IllegalArgumentException.

Mam problemy z odwzorowaniem pola checked_out TINYINT. Jedyną rzeczą do sprawdzenia poprawności tego pola przez GORM jest zadeklarowanie go jako Boolean, dlaczego nie działa z Byte?

Mam również pewne wątpliwości, jak zmapować pole MySQL TIME, takie jak checked_out_time.

Przeczytałem również część dokumentacji Hibernate, ale wciąż nie zdobywam potrzebnej wiedzy do wykonania tego zadania!

Ktoś może pomóc, proszę?

+1

zacząłem nową rozmowę na forum Grails społeczności na ten temat i więcej Joomla integracji <-> Grails, przy http://goo.gl/ARiug – gsscoder

+2

Można znaleźć tej wtyczki przydatnych http://www.grails.org/plugin/db-reverse-engineer –

+0

Czy możesz podać więcej informacji o oryginalnym stole? Wspominasz na przykład "checked_out" i "checked_out_time". – mathifonseca

Odpowiedz

2

Wskazujesz "typ", ale powinien wskazywać "sqlType", dlatego uważam, że masz problemy z TINYINT i musisz użyć wartości Boolean zamiast Byte. Id jest domyślnie int (a właściwie bigint), ale nie będzie narzekać na ciebie o tym, chyba że używasz dbCreate = "validate", a pozostałe wartości są ciągami, więc niekoniecznie spowoduje to problem z kompatybilnością dla notatki.

static mapping = { 
    datasource 'joomla' 
    table 'jos_bannerclient' 
    id column:'cid', sqlType:'int' 
    notes column:'extrainfo', sqlType:'text' 
    version false 
} 

chodzi o kwestię czasu, udało się określić typ TIMESTAMP bez problemu, więc mogę sobie wyobrazić CZAS będzie działać dobrze, jak dobrze. Wszystkie typy SQL powinny być obsługiwane. Na przykład:

static mapping = { 
    dateCreated sqlType: 'TIMESTAMP', defaultValue: 'CURRENT_TIMESTAMP' 
} 
Powiązane problemy