2010-11-03 10 views
8

Si uso JPA (EclipseLink) para crear tablas, un tipo de cadena da como resultado un varchar2 (255). ¿Cómo podría decirle a JPA (a través de Anotación) que cree un atributo varchar2 (20)?Cómo decirle a JPA el tipo de datos preferido

Si tengo una lista de APP crea un BLOB (4000), pero me gustaría un varchar2 (cadena de mi objeto serializado es corto)

¿Cómo es esto posible? ¿Tengo que hacerlo a mano?

Respuesta

18

Debe usar la propiedad columnDefinition de la anotación @Column. es decir,

@Column(columnDefinition="varchar2(20)") 
+0

Muchas gracias ... lo intentaremos mañana –

+0

-1 como @Pascals respuesta a continuación es mejor. Evita el problema de compatibilidad causado al hacer referencia explícita al tipo de datos en su código. –

+0

Esto es útil para situaciones en las que necesita decirle a JPA que la columna NVARCHAR no es VARCHAR (255), pero este no es el caso. – David

3
@Column(name = "doc_number", columnDefinition = "varchar2(20)") 

Por favor, intente eso.

+0

No es la solución portátil – ruX

15

Si uso JPA (EclipseLink) para crear tablas, un tipo de cadena da como resultado un varchar2 (255). ¿Cómo podría decirle a JPA (a través de Anotación) que cree un atributo varchar2 (20)?

El uso del columnDefinition puede interrumpir la portabilidad de una base de datos a otra. Para una columna de cadena de valor, prefieren utilizar el elemento length (que por defecto es 255):

@Column(length=20) 
String someString; 
+2

+1 por mencionar los problemas de portabilidad relacionados con columnDefinition. –

+2

Creo que puede mejorar su respuesta sobre el atributo para valores numéricos. – PhoneixS

4

puede establecer el length en su @Column anotación, como tal:

@Column(length = 20) 

Tenga en cuenta que la longitud es solo para columnas de texto. Para numérico, puede usar precision y scale.

+1

+1 para la misma idea, entonces :) –

+0

¿Qué pasa con el voto negativo? –

Cuestiones relacionadas