2009-12-09 6 views
13

Quelqu'un peut-il me dire comment conserver un texte long en utilisant JPA (j'utilise PostgreSQL)?JPA et PostqreSQL: persistance de longue chaîne

est ici la façon dont je définissais une très longue chaîne dans ma classe:

@Lob 
private String body; 

Cependant, cela produit un champ de type charactervarying (255) dans la base de données.

De plus, je l'ai essayé d'utiliser l'annotation @Column:

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

Mais tout en vain.

Je serais reconnaissant pour un commentaire utile sur ce problème.

+0

Je faisais la première chose, et j'ai reçu un OID, LO dans postgresql, vrai cauchemar – jacktrades

Répondre

17
@Column(columnDefinition="TEXT") 

est en effet le moyen de le faire. Peut-être que vous devez régénérer votre DDL?

+0

Malheureusement, il semble que l'annotation @Column soit complètement ignorée. – emanemos

+0

TEXT drôle est en majuscule ... – jacktrades

+0

Cher Jonathan, j'ai fatigué le correctif suggéré ci-dessus, mais je reçois erreur. Votre aide sera appréciable. S'il vous plaît aider. http://stackoverflow.com/questions/25094410/hibernate-abstractmethoderror-setcharacterstreamiljava-io-readerjv?noredirect=1#comment39048566_25094410 –

10

Ceci est un très vieux post, mais comme il a beaucoup de points de vue, et j'ai eu une question similaire encore aujourd'hui, je suppose que cela vaut la peine d'une réponse simple.

Ma solution était similaire, mais je trouve que je avais besoin la colonne LONGTEXT à la place:

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

Et oui, vous ne devez régénérer. J'utilise Play! et j'ai dû redémarrer mon application.

+3

Quelle était votre intention d'utiliser LONGTEXT au lieu de TEXT? La raison est manquante. –

15

J'avais le même cas aujourd'hui. Juste

@Lob 
private String body; 

devrait créer une colonne db de typ "texte" (PostgreSQL - longueur illimitée variable), mais la table doit être régénéré.

+0

Celui-ci devrait être la bonne approche, les autres solutions me donnent: ERREUR: erreur de syntaxe à ou près de "' " –

0

Vous pouvez également utiliser les annotations de validation:

@Size(max=xxx) 

qui servirait aussi comme une contrainte de validation bien sûr.

Questions connexes