Se um campo é anotado insertable=false, updatable=false
, isso não significa que você não pode inserir valor nem alterar o valor existente? Por que você gostaria de fazer isso?
@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
fonte
fonte
insertable=false,updatable=false
de um dos lados do relacionamento.... to the @ManyToOne relationship with the ...
??A definição
insertable=false, updatable=false
é útil quando você precisa mapear um campo mais de uma vez em uma entidade, normalmente:Isso é IMO, não semântico, mas definitivamente técnico.
fonte
Gostaria de acrescentar às respostas de BalusC e Pascal Thivent outro uso comum de
insertable=false, updatable=false
:Considere uma coluna que não é um ID, mas algum tipo de número de sequência . A responsabilidade pelo cálculo do número de sequência pode não necessariamente pertencer ao aplicativo.
Por exemplo, o número de sequência começa com 1000 e deve ser incrementado em um para cada nova entidade. Isso é fácil e muito apropriado no banco de dados e, nesses casos, essas configurações fazem sentido.
fonte
Um outro exemplo seria na coluna "created_on", na qual você deseja permitir que o banco de dados lide com a criação da data
fonte