2013-10-10 16 views
5

Mam następujący (Grails) obiektu domeny:PostgreSQL Java typy danych (Grails)

class Country { 

Integer id 
char country_abbr 
String country_name 

static mapping = { 
    version false 
    id name: 'id' 
    table 'country' 
    id generator:'identity', column:'id' 
} 

static constraints = { 
}} 

'country_abbr' pola w 'kraj tabeli' ma typ: charakter (2). Jednak, gdy jestem ustawienie typu danych obiektu domeny (dla „country_abbr”) do String, inicjalizacji się niepowodzeniem z następującym wyjątkiem

org.hibernate.HibernateException: Wrong column type in mydb.country for column country_abbr. Found: bpchar, expected: varchar(255) 

Z drugiej strony, pozostawiając ten typ jako Java char pobiera tylko pierwszy znak. Jakieś pomysły, jak mogę odwzorować tego typu? Co dokładnie jest bpchar?

Dzięki

+1

Uwaga: nie trzeba dodawać atrybutu identyfikatora, jest on wykonywany automatycznie przez Grails. Konwencją jest użycie camelcase w twoich atrybutach, Grails zajmie się konwersją na podkreślniki do pobierania danych. Ciąg countryName zostanie przetłumaczony na nazwa kraju w querys. –

+0

[Wydaje się, że problem mapowania Hibernuj] (http://forum.spring.io/forum/spring-projects/data/33043-mapping-error-w-postgres). Czy mógłbyś spróbować char [] dla countryAbbr? –

+0

@ SérgioMichels Nadal nie działa z char []; dzięki za inne wskazówki :) – Dan

Odpowiedz

2

Właśnie po to, aby odpowiedzieć na to pytanie. Rozwiązanie to zmienić przyporządkowanie country_abbr:

country_abbr columnDefinition: 'char' 

referencyjny here.