Пожалуйста, объясните о: вставляем = ложь, обновляемый = ложь - PullRequest
123 голосов
/ 27 сентября 2010

Если поле аннотировано insertable=false, updatable=false, не означает ли это, что вы не можете ни вставить значение, ни изменить существующее значение?Зачем тебе это делать?

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

Ответы [ 4 ]

103 голосов
/ 27 сентября 2010

Это можно сделать, когда ответственность за создание / обновление соответствующей связанной сущности отсутствует в текущей сущности. Например. у вас есть Person и Address. Вы хотите добавить insertable=false, updatable=false в отношение @OneToMany с сущностью Person в сущности Address просто потому, что сущность Address не несет ответственности за создание или обновление Person. Это наоборот.

90 голосов
/ 27 сентября 2010

Определение insertable=false, updatable=false полезно, когда вам нужно отобразить поле в сущности более одного раза, обычно:

Это IMO не семантическая вещь, но определенно техническая.

19 голосов
/ 23 апреля 2013

Я хотел бы добавить к ответам BalusC и Pascal Thivent другое общее использование insertable=false, updatable=false:

Рассмотрим столбец, который не является id но какой-то порядковый номер .Ответственность за расчет порядкового номера может не обязательно принадлежать приложению.

Например, порядковый номер начинается с 1000 и должен увеличиваться на единицу для каждого нового объекта.Это легко сделать, и очень уместно, в базе данных, и в таких случаях эти конфигурации имеют смысл.

7 голосов
/ 01 августа 2017

Другим примером может служить столбец create_on, в котором вы хотите, чтобы база данных обрабатывала дату создания.

...