jpa
Отношения между субъектами
Поиск…
замечания
Отношения между сущностями
Внешний ключ может быть одним или несколькими столбцами, которые ссылаются на уникальный ключ, обычно первичный ключ, в другой таблице.
Внешний ключ и основной родительский ключ, на которые он ссылается, должны иметь одинаковое количество и тип полей.
Внешние ключи представляют отношения из столбца или столбцов в одной таблице столбцу или столбцам в другой таблице.
Множественность сущностных отношений
Множественность сущностных отношений
Множества имеют следующие типы:
- Индивидуально : каждый экземпляр объекта связан с одним экземпляром другого объекта.
- Один-ко-многим : экземпляр объекта может быть связан с несколькими экземплярами других объектов.
- «Много-к-одному» : несколько экземпляров объекта могут быть связаны с одним экземпляром другого объекта.
- Многие-ко-многим : экземпляры объектов могут быть связаны с несколькими экземплярами друг друга.
Индивидуальное сопоставление
Индивидуальное сопоставление определяет однозначную связь с другой сущностью, которая имеет множественность один-к-одному. Это сопоставление отношений использует аннотацию @OneToOne для соответствующего постоянного свойства или поля.
Пример: объекты Vehicle and ParkingPlace .
Сопоставление «один ко многим»
Экземпляр объекта может быть связан с несколькими экземплярами других объектов.
Соотношения «один ко многим» используют аннотацию @OneToMany в соответствующем постоянном свойстве или поле.
Элемент mappedBy необходим для ссылки на атрибут, аннотированный ManyToOne в соответствующем объекте:
@OneToMany(mappedBy="attribute")
Ассоциация «один ко многим» должна отображать коллекцию объектов.
Сопоставление «много-к-одному»
@ManyToOne сопоставление определяется путем аннотации атрибута в исходном объекте (атрибуте, который относится к целевому объекту) с аннотацией @ManyToOne .
@JoinColumn(name="FK_name") описывают ключ для взаимодействия.
Отображение многих ко многим
Экземпляры сущности могут быть связаны с несколькими экземплярами друг друга.
@ManyToMany Many-to-many используют аннотацию @ManyToMany в соответствующем постоянном свойстве или поле.
Мы должны использовать третью таблицу для сопоставления двух типов сущностей (join table).
@JoinTable Пример аннотации
При сопоставлении отношений «многие ко многим» в JPA конфигурация таблицы, используемой для соединения внешних ключей, может быть предоставлена с @JoinTable аннотации @JoinTable :
@Entity
public class EntityA {
@Id
@Column(name="id")
private long id;
[...]
@ManyToMany
@JoinTable(name="table_join_A_B",
joinColumns=@JoinColumn(name="id_A"), referencedColumnName="id"
inverseJoinColumns=@JoinColumn(name="id_B", referencedColumnName="id"))
private List<EntityB> entitiesB;
[...]
}
@Entity
public class EntityB {
@Id
@Column(name="id")
private long id;
[...]
}
В этом примере, который состоит из EntityA , имеющие много-ко-многим отношения к EntityB, осуществлянного entitiesB области, мы используем @JoinTable аннотации , чтобы указать , что имя таблицы для присоединения таблицы table_join_A_B , состоящее из колонн id_A и id_B , внешние ключи, соответственно ссылающиеся на id столбца в таблице EntityA и в таблице EntityB; (id_A,id_B) будет составным первичным ключом для таблицы table_join_A_B .