S'il vous plaît expliquer à propos de insertable=false et updatable=false En rapport avec l'annotation JPA @Column

Si le champ est annoté
insertable=false, updatable=false

, Cela signifie-t-il que vous ne pouvez pas insérer une valeur ou changer la valeur existante? Pourquoi voulez-vous le faire?


@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;
}


</address>
Invité:

Catherine

Confirmation de:

Vous le feriez si

responsabilité

Pour la création/Mettre à jour l'essence appropriée, dont nous parlons, n'a pas été allongé sur

Actuel

Entités. E.g. vous avez
Person

et
Address

. Voulez-vous ajouter
insertable=false, updatable=false

aux relations
@OneToMany

avec essence
Person

En réalité
Address

juste parce que l'essence
Address

pas responsable de la création ou de la mise à jour
Person

. Tout le contraire.

Dominique

Confirmation de:

Définition
insertable=false, updatable=false

Il est utile lorsque vous devez comparer le terrain plus d'une fois par essence, en règle générale:

Lorsque vous utilisez une clé composite

utilisant
http://en.wikibooks.org/wiki/J ... ships
utilisant
http://en.wikibooks.org/wiki/J ... _Keys
il IMO Pas une chose sémantique, mais définitivement technique.

Emilie

Confirmation de:

Je voudrais ajouter aux réponses

BalusC

et

Pascal Thivent

une plus de consommation commune
insertable=false, updatable=false

:

Considérer une colonne qui n'est pas

identifiant

, et un peu

nombre ordinal

. La responsabilité du calcul du numéro de séquence ne se trouve pas nécessairement sur l'application.

Par exemple, le numéro de séquence commence par 1000 et devrait augmenter par un pour chaque nouvel objet. Il est facile de faire, et très correctement, dans la base de données, et dans de tels cas, ces configurations ont un sens.

Emilie

Confirmation de:

Un autre exemple-colonne "created_on", dans lequel vous voulez que la base de données gère la date de création

Pour répondre aux questions, connectez-vous ou registre