Пожалуйста, объясните о: insertable=false, updatable=false



Если поле помечено 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;
}
765   4  

4 ответов:

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

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

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

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

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

другой пример будет в столбце" created_on", где вы хотите, чтобы база данных обрабатывала дату создания

Comments

    Ничего не найдено.