2013-10-10 17 views
5

Ho la seguente (Grails) oggetto di dominio:PostgreSQL per Java Tipi di dati (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 = { 
}} 

Il 'country_abbr' campo all'interno del 'tavolo Paese' ha digitare: carattere (2). Tuttavia, ogni volta che sto impostazione del tipo di dati dell'oggetto di dominio (ad 'country_abbr') per String, l'inizializzazione sta venendo a mancare con la seguente eccezione

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

D'altra parte, lasciando questo tipo come Java char recupererebbe solo il primo carattere. Qualche idea su come posso mappare a questo tipo? Inoltre, cos'è esattamente bpchar?

Grazie

+1

Solo una nota: non è necessario aggiungere l'attributo id, questo è reso automatico da Grails. Inoltre, la convenzione consiste nell'utilizzare Camelcase nei propri attributi, Grails gestirà la conversione in caratteri di sottolineatura per il recupero dei dati. String countryName sarà tradotto in country_name in querys. –

+0

[Sembra un problema di mappatura Hibernate] (http://forum.spring.io/forum/spring-projects/data/33043-mapping-error-with-postgres). Potresti provare char [] per countryAbbr? –

+0

@ SérgioMichels Ancora non funziona con char []; grazie per gli altri suggerimenti :) – Dan

risposta

2

Giusto per rispondere a questa domanda. La soluzione è quella di cambiare la mappatura country_abbr:

country_abbr columnDefinition: 'char' 

riferimento here.