Sto lavorando a un progetto che utilizza Oracle 10g e Grails v2.0.1.Utilizzo di Oracle 10g CLOB con Grails 2.0.1
Sto cercando di utilizzare un tipo di dati CLOB per un campo di immissione di testo nella mia classe Dominio e sembra non funzionare. Il mio primo tentativo era basata su quello che ho letto here about GORM, dove è dice di usare type: 'text'
, come in questo esempio:
class Address {
String number
String postCode
static mapping = {
postCode type: 'text'
}
}
Grails mappati che a un tipo di dati LONG
nel mio DB, che è not desirable
secondo tentativo doveva provare type: 'clob'
. È stato efficace ottenere il mio tipo di dati DB come CLOB, ma ha provocato un errore di cast di classe perché la proprietà stessa era definita come una stringa, ad esempio String postCode
. (Si noti che non ho mai visto type:'clob'
nella documentazione, ma ho potuto dedurre dalla classe dialetto che clob
potrebbe essere un input valido lì)
Successivamente ho cercato di definire la proprietà come java.sql.Clob
, cioè Clob postCode;
, e che didn' lavorare affatto Nessun messaggio di errore, ma nulla è stato mantenuto persistente nel DB.
Ho fatto l'ultimo passo per mantenere l'approccio Clob
, ma utilizzando una proprietà transitoria String
in cui i getter/setter tentano di associare il valore di stringa temporaneo al campo Clob persistente. Ma non riesco a capire come ottenere il mio valore di stringa nel Clob. Grails non genera un errore, ma lo println()
dopo il mio tentativo di assegnazione non viene mai stampato. Ho provato a utilizzare myClob.setString(1, theString)
per eseguire un compito, ma senza successo.
Quindi, per farla breve, non riesco a utilizzare un Clob nel mio scenario, e mi chiedo se qualcun altro ha visto questo ed è stato in grado di superarlo. Se è così, puoi dirmi cosa potrei fare di sbagliato?
O ... c'è un modo per ignorare il tipo di dati che Grails sceglie in modo tale da costringerlo a mappare postCode type: 'text'
in un CLOB
? Non sono abile con Hibernate, quindi non sono sicuro di come farlo se c'è un modo.
Nota a margine: prima del nostro aggiornamento da Grails 1.3.7 a 2.0.1, sono abbastanza sicuro che lo type: 'text'
abbia effettivamente eseguito il mapping su un CLOB in Oracle. Quindi questo potrebbe essere nuovo per 2.0.1.
Bene in [2.0.x docs] (http://grails.org/doc/2.0.x/ref/Database%20Mapping/type.html) in realtà è scritto che il tipo nel tuo caso sarà clob, ma Non avevo ancora bisogno di usarlo, quindi non posso assicurare che funzioni su 2.0.x –