2013-10-10 73 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?

謝謝

+1

只需注意:您不需要添加id屬性,這是由Grails自動完成的。此外,約定是在您的屬性中使用camelcase,Grails將處理轉換爲下劃線以檢索數據。字符串countryName將在查詢中轉換爲country_name。 –

+0

[這似乎是一個Hibernate映射的問題](http://forum.spring.io/forum/spring-projects/data/33043-mapping-error-with-postgres)。你可以嘗試char [] for countryAbbr嗎? –

+0

@SérgioMichels它仍然失敗與char [];感謝您的其他提示:) – Dan

回答

2

只是爲了讓這個問題得到解答。解決方案是更改country_abbr映射:

country_abbr columnDefinition: 'char' 

參考here