52 votes

Champ de texte utilisant l'annotation de mise en veille prolongée

J'ai du mal à définir le type d'une chaîne, ça va comme

 public void setTextDesc(String textDesc) {
	this.textDesc = textDesc;
}

@Column(name="DESC")
@Lob
public String getTextDesc() {
	return textDesc;
}
 

et ça n'a pas marché, j'ai vérifié le schéma mysql et ça reste varchar (255), j'ai aussi essayé,

 @Column(name="DESC", length="9000")
 

ou

 @Column(name="DESC")
@Type(type="text")
 

J'essaie de faire le type pour être TEXTE, toute idée serait bien appréciée!

93voto

ChssPly76 Points 53452

Vous avez dit "j'ai vérifié la base de données mysql schéma et il reste varchar(255)" - avez-vous attendre d'Hibernation pour modifier automatiquement votre base de données? Il ne sera pas. Même si vous avez hibernate.hbm2ddl.auto ensemble, je ne crois pas que Hibernate serait de modifier l'existant, définition de la colonne.

Si vous étiez à générer de nouvelles script de création de base de données, @Lob devrait générer "TEXTE" type de colonne si vous ne spécifiez pas de la longueur de façon explicite (ou si vous le faites et c'est moins que 65536). Vous pouvez toujours la force que de déclarer explicitement le type en @Column d'annotation, mais gardez à l'esprit que n'est pas portable entre les bases de données:

@Column(name="DESC", columnDefinition="TEXT")

2voto

Hugo Points 21

Je suis à l'aide de @Indexés et @Analyseur, ils sont à la fois de mise en veille prolongée de recherche. Je suis toujours en train d'enquêter sur la question. Ma conviction me dit que depuis que je suis à l'extension d'un tiers plug-in bibliothèque de classe pour la mise en veille prolongée (gilead - LightEntity), et depuis Hibernate Annotations détecte le raw type java pour déterminer la db, col-def, je pense que d'une certaine manière gilead empêche veille prolongée dans la conversion de type, sauf s'il est mis en œuvre avec la recherche, où la recherche de la forcer à Type de fonte. – bernardw le 15 Août '09 à 6:56


Ce post a sauvé ma journée. Après beaucoup de recherche j'ai ajouté le @Indexé annotation à partir de la "mise en veille prolongée-moteur de recherche" artefact maven vers le haut de ma classe d'entité et tout a commencé à travailler. Je ne sais pas vraiment pourquoi il se passe, mais au moins il est heureux de travailler avec Hibernate. Je pensais Eclipselink si je ne peux pas régler cette erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X