Si un champ est annoté insertable=false, updatable=false
, cela ne signifie-t-il pas que vous ne pouvez pas insérer de valeur ni modifier la valeur existante? Pourquoi voudriez-vous faire ça?
@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
la source
la source
insertable=false,updatable=false
de l'un des côtés de la relation.... to the @ManyToOne relationship with the ...
??La définition
insertable=false, updatable=false
est utile lorsque vous devez mapper un champ plusieurs fois dans une entité, généralement:Ce n'est pas une chose sémantique de l'OMI, mais certainement technique.
la source
Je voudrais ajouter aux réponses de BalusC et Pascal Thivent une autre utilisation courante de
insertable=false, updatable=false
:Considérez une colonne qui n'est pas un identifiant mais une sorte de numéro de séquence . La responsabilité du calcul du numéro de séquence n'appartient pas nécessairement à l'application.
Par exemple, le numéro de séquence commence par 1000 et doit être incrémenté de un pour chaque nouvelle entité. Cela se fait facilement et de manière très appropriée dans la base de données, et dans de tels cas, ces configurations ont du sens.
la source
Un autre exemple serait sur la colonne "created_on" où vous souhaitez laisser la base de données gérer la création de la date
la source