2009-08-15 14 views
46

Estoy teniendo problemas para configurar el tipo de una cadena, que va comoCampo de texto usando Hibernate anotación

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

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

y no funcionó, he comprobado el esquema MySQL y sigue siendo varchar (255), I también tratado,

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

o

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

que estoy tratando de hacer que el tipo a ser texto, alguna idea sería muy apreciada!

+0

Qué hibernación versión utiliza? – Oleksii

Respuesta

77

Dijiste "Comprobé el esquema de mysql y sigue siendo varchar (255)": ¿esperabas que Hibernate modificara automáticamente tu base de datos? No lo hará. Incluso si tiene hibernate.hbm2ddl.auto configurado, no creo que Hibernate altere la definición de columna existente.

Si va a generar una nueva secuencia de comandos de creación de base de datos, @Lob debe generar columna de tipo "TEXTO" si no especifica la longitud explícitamente (o si lo hace y es menos de 65536). Siempre se puede obligar a que según el tipo de la que se declara explícitamente en @Column anotación, aunque tenga en cuenta que no es portable entre bases de datos:

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

a la derecha, dejé la base de datos cada vez que cambio las anotaciones, con hbm2ddl.auto activado, por lo que espero que cambie cuando vuelva a verificar (disculpe la ambigüedad). De alguna manera, columnDefinition tampoco funcionó para mí. ¿Me estoy perdiendo algo más? gracias por la entrada, por cierto. – bernardw

+0

Especificar 'columnDefinition' es tan explícito como puede obtenerse; debe haber algo más en curso. ¿Estás seguro de que tu clase compilada es recogida correctamente por Hibernate? ¿Se está extendiendo/extendiendo por alguna otra clase? No puedo pensar en nada más que pueda causar esto, pero si puedes publicar toda tu fuente para esta clase, tu configuración de Hibernate y describir cómo estás ejecutando esto, ciertamente veré si algo salta sobre mí. ¿También puede intentar agregar una propiedad falsa a esta clase y generar un esquema como archivo SQL para ver si aparece allí (verificación de cordura)? – ChssPly76

+0

Finalmente lo puse a trabajar poniendo a @Indexed en la parte superior de la clase, pero no puedo razonar por qué eso es ... – bernardw

Cuestiones relacionadas