2013-10-10 2 views
5

У меня есть следующий (Grails) домен объект:PostgreSQL на Java Типов данных (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' поля в 'страны таблицы' имеет типа: характера (2). Тем не менее, всякий раз, когда я устанавливаю тип данных объекта домена (для «country_abbr») до строк, инициализация происходит сбой со следующим исключением

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

С другой стороны, в результате чего этого типа как Java char получит только первый символ. Любые идеи, как я могу сопоставить этот тип? Кроме того, что такое bpchar?

Thanks

+1

Просто примечание: вам не нужно добавлять атрибут id, это делается автоматически Grails. Кроме того, соглашение заключается в использовании camelcase в ваших атрибутах, Grails обработает преобразование в подчеркивания для извлечения данных. Строка countryName будет переводиться в country_name в запросах. –

+0

[Кажется, проблема отображения Hibernate] (http://forum.spring.io/forum/spring-projects/data/33043-mapping-error-with-postgres). Не могли бы вы попробовать char [] для countryAbbr? –

+0

@ SérgioMichels Он по-прежнему не работает с char []; спасибо за другие советы :) – Dan

ответ

2

Просто для ответа на этот вопрос. Решение состоит в том, чтобы изменить отображение country_abbr:

country_abbr columnDefinition: 'char' 

Reference here.

Смежные вопросы