2009-12-09 18 views
13

Qualcuno può dirmi come mantenere il testo lungo usando JPA (utilizzo PostgreSQL)?JPA e PostqreSQL: lunga persistenza delle stringhe

Ecco il modo in cui ho definito una stringa molto lunga nella mia classe:

@Lob 
private String body; 

Tuttavia, questo produce un campo di tipo charactervarying (255) nel database.

Inoltre, ho cercato di utilizzare @Column annotazione:

@Column(columnDefinition="TEXT") 
private String body; 

Ma tutto invano.

Sarei grato per un commento utile su questo problema.

+0

Stavo facendo la prima cosa, e ho ottenuto un OID, LO in postgresql, vero incubo – jacktrades

risposta

17
@Column(columnDefinition="TEXT") 

è davvero il modo per farlo. Forse devi rigenerare il tuo DDL?

+0

Sfortunatamente, sembra che l'annotazione @Column sia completamente ignorata. – emanemos

+0

Il TESTO divertente è in maiuscolo ... – jacktrades

+0

Caro Jonathan, ho stancato la correzione sopra suggerita, ma sto ricevendo un errore. Il tuo aiuto sarà gradevole. Per favore aiuto. http://stackoverflow.com/questions/25094410/hibernate-abstractmethoderror-setcharacterstreamiljava-io-readerjv?noredirect=1#comment39048566_25094410 –

10

Questo è un post molto vecchio, ma dal momento che ha molte viste e ho avuto una domanda simile anche oggi, credo valga la pena di una risposta semplice.

La mia soluzione era simile, ma ho scoperto che mi serviva la colonna LONGTEXT invece:

@Column(columnDefinition="LONGTEXT") 
private String body; 

E sì, si ha a rigenerarlo. Sto usando Play! e ho dovuto riavviare la mia app.

+3

Qual era la tua intenzione di utilizzare LONGTEXT anziché TEXT? La ragione è mancante. –

15

Ho avuto lo stesso caso oggi. Basta

@Lob 
private String body; 

dovrebbe creare una colonna db di tip "testo" (PostgreSQL - lunghezza illimitata variabile) ma il tavolo deve essere rigenerata.

+0

Questo dovrebbe essere l'approccio corretto, le altre soluzioni mi danno: ERRORE: errore di sintassi in corrispondenza o vicino a "' " –

0

È inoltre possibile utilizzare le annotazioni di validazione:

@Size(max=xxx) 

che sarebbe anche servire come un vincolo di validazione naturalmente.

Problemi correlati