Установка параметров JoinColumn для вставки и обновления до нуля - PullRequest
1 голос
/ 30 мая 2011

В Интернете я видел пару примеров использования JoinColumn, как в примере ниже.

На самом деле, есть два вопроса, которые я хочу задать вам об этом частном примере.Разве мы не можем просто избавиться от «необязательного» параметра, добавив параметр «nullable = false» в JoinColumn.Есть ли какие-либо различия между необязательными и обнуляемыми объектами?Каковы преимущества установки вставляемого и обновляемого в false в joincolumn?Это сделано для того, чтобы объект «Сотрудник» не мог обновить объект «Департамент»?

@Entity
public class Employee {
  // ...

  @ManyToOne(optional=false)
  @JoinColumn(name="DEPT_ID", insertable=false, updatable=false)
  private Department department;
  // ...
}

1 Ответ

2 голосов
/ 30 мая 2011

optional = false в ManyToOne - это инструкция времени выполнения для структуры персистентности, которую нужно интерпретировать при создании объектов Java. nullable = true в JoinColumn предназначен для настройки схемы базы данных и может интерпретироваться или не интерпретироваться во время выполнения в зависимости от вашего поставщика сохраняемости.

Как правило, сопоставление JoinColumn выполняется таким образом, чтобы указывать, что отношения управляются с другой стороны, Департаментом.

Скорее всего, у вас будет:

@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="DEPT_ID")
private Set<Employee> employees;

Перейдите в свой отдел, и вы создадите новые отношения между сотрудниками и отделами, добавив их в коллекцию, а не установив отдел для сотрудника. Вот почему вы отмечаете отдел сотрудника как не подлежащий обновлению, поскольку отдел «владеет» возможностью изменять отношения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...