tobb
Con JPA, generación de DDL para el atributo:
@Column
final String someString;
será someString varchar(255) null
@Column(length = 1337)
final String someString;
rendirá someString varchar(1337) null
.
Pero, ¿cómo puedo hacer que produzca someString varchar(max) null
?
¿Es posible usar el length
-atributo, o necesito usar el columnDefinition
-¿atributo?
tobb
Han pasado algunos meses, se han adquirido nuevos conocimientos, así que responderé mi propia pregunta:
@Lob
@Column
final String someString;
da el resultado más correcto. Con la versión de hbm2ddl
estoy usando, esto se transformará al tipo text
con SqlServerDialect
. Desde varchar(max)
es el reemplazo de text
en versiones más recientes de servidor SQLcon suerte, versiones más nuevas de hbm2ddl
rendirá varchar(max)
en lugar de text
para este tipo de mapeo (estoy atascado en una versión bastante anticuada de Hibernate en este momento…)
-
Proporcionar un SQLServerDialect personalizado que asigne un lob de texto a varchar (max) también podría funcionar, aunque no lo he intentado.
– Tobb
31 de julio de 2018 a las 17:03
Núcleo de datos
Desde length
se define en la especificación JPA y javadocs como int
tipo y max
no es un int
entonces es seguro asumir que está consignado al columnDefinition
ruta dependiente del almacén de datos. Pero entonces varchar(max)
depende del almacén de datos de todos modos.
-
Otros lugares en los textos grandes del proyecto fueron anotados con
@Lob
lo que resulta en unatext
tipo de datos SQL. hare lo mismo..– Tobb
7 mayo 2013 a las 11:13
kagiso shibambo
Hola, el siguiente código solucionó el mismo problema.
@Column(columnDefinition="TEXT")
@Lob
final String someString;
-
Esto no proporciona ninguna mejora a las respuestas existentes, tiene @Lob y columnDefinition que hacen lo mismo, y el uso de columnDefinition interrumpe innecesariamente la portabilidad.
– Tobb
26 de marzo de 2021 a las 10:50
Anudeep Sharma
Usar @Size(max = 1337)
. genera varchar(1337)
Puedes usar este código –
Código del modelo:
@NotNull
@Length(max = 7)
@Column(name = "Gender")
private String gender;
La salida SQL es como-
> gender varchar(7)
-
No estás respondiendo la pregunta, solo repitiendo partes de ella.
– Tobb
28 de abril de 2019 a las 10:46
-
No estás respondiendo la pregunta, solo repitiendo partes de ella.
– Tobb
28 de abril de 2019 a las 10:46