Si un campo está anotado insertable=false, updatable=false
, ¿no significa que no puede insertar valor ni cambiar el valor existente? ¿Por qué querrías hacer eso?
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(mappedBy="person", cascade=CascadeType.ALL)
private List<Address> addresses;
}
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
@JoinColumn(name="ADDRESS_FK")
@Column(insertable=false, updatable=false)
private Person person;
}
java
jpa
jakarta-ee
eclipselink
Thang Pham
fuente
fuente
insertable=false,updatable=false
en uno de los lados de la relación.... to the @ManyToOne relationship with the ...
?La definición
insertable=false, updatable=false
es útil cuando necesita asignar un campo más de una vez en una entidad, generalmente:Esto es IMO, no una cosa semántica, sino definitivamente técnica.
fuente
Me gustaría agregar a las respuestas de BalusC y Pascal Thivent otro uso común de
insertable=false, updatable=false
:Considere una columna que no es una identificación, sino algún tipo de número de secuencia . La responsabilidad de calcular el número de secuencia no necesariamente pertenece a la aplicación.
Por ejemplo, el número de secuencia comienza con 1000 y debe incrementarse en uno para cada nueva entidad. Esto se hace fácilmente, y de manera muy apropiada, en la base de datos, y en tales casos estas configuraciones tienen sentido.
fuente
Otro ejemplo sería en la columna "created_on" donde desea permitir que la base de datos maneje la creación de la fecha
fuente