Jeśli pole jest opatrzone adnotacją insertable=false, updatable=false
, czy nie oznacza to, że nie możesz wstawić wartości ani zmienić istniejącej wartości? Dlaczego chcesz to zrobić?
@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
źródło
źródło
insertable=false,updatable=false
po jednej ze stron relacji.... to the @ManyToOne relationship with the ...
?Definiowanie
insertable=false, updatable=false
jest przydatne, gdy trzeba odwzorować pole więcej niż raz w encji, zazwyczaj:To IMO nie jest kwestią semantyczną, ale zdecydowanie techniczną.
źródło
Chciałbym dodać do odpowiedzi BalusC i Pascala Thiventa inne powszechne użycie
insertable=false, updatable=false
:Rozważmy kolumnę, która nie jest identyfikatorem, ale jakimś numerem kolejnym . Odpowiedzialność za obliczenie numeru kolejnego niekoniecznie musi należeć do aplikacji.
Na przykład numer kolejny zaczyna się od 1000 i powinien być zwiększany o jeden dla każdej nowej jednostki. Jest to łatwe i bardzo trafne w bazie danych iw takich przypadkach takie konfiguracje mają sens.
źródło
Innym przykładem może być kolumna „created_on”, w której chcesz, aby baza danych obsługiwała tworzenie daty
źródło