campo de cadena sencilla,JPA: ¿Qué debería usar? Básico (opcional) o Columna (nulable)? Para
@Entity
class Foo {
//1. @Basic(optional = false)
//2. @Column(length = 100, nullable = false)
String name;
}
necesito para restringir la longitud del nombre mediante @Column
anotación, pero estoy confundido con el atributo anulable. Mientras estoy usando otras anotaciones como @ManyToOne
y @OneToMany
que usan los atributos optional
, me apetece usar @Basic(optional)
para mantener la mayoría de las anotaciones uniformes. Pero no puedo restringir la longitud del nombre con @Basic
.
Entonces, ¿dónde debo anotar el atributo que admite nulos, por @Basic
o @Column
?
EDITAR
simplemente decir, en qué forma prefieres:
Formulario 1:
@Entity
class Foo {
@Basic(optional = false)
@Column(length = 100)
String name;
}
Forma 2:
@Entity
class Foo {
@Column(length = 100, nullable = false)
String name;
}
Bueno, personalmente me gusta Formulario 1, porque optional
atributo también se usa en las anotacionesetc., pero el Formulario 2 también es bueno porque está hecho en una sola anotación.
EDITAR
Después de leer http://markmail.org/message/osod6rsauwbnkvya, tengo la diferencia entre @Basic.optional
y @Column.nullable
. Pero todavía no sé cuál debería usar. Parece bueno incluir ambas anotaciones, por lo tanto, asegúrese de que la tabla subyacente esté bien definida y marque nulo en JPA antes de que la actualización real sea ligeramente más rápida.
posible duplicado de [@Basic (opcional = falso) vs @Column (nullable = falso) en JPA] (http://stackoverflow.com/questions/2899073/basicoptional-false-vs-columnnullable-false-in- jpa) – rds