Arhn - архитектура программирования

Hibernate Хранение полей внутри классов

У меня есть два класса с двумя отдельными таблицами: «Сотрудник» и «Компания». Я хотел бы вести список сотрудников внутри класса «Компания». Это просто, но я не знаю, как представить этот список на стороне базы данных.

Класс «Компания»:

@Entity
@Table(name = "company")
public class Company {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @Column(name = "name")
    private String name;

    private List<Employee> employeeList;

}

Класс «Сотрудник»:

@Entity
@Table(name = "employee")
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

Без спящего режима я бы выбрал дизайн, создающий другую таблицу с двумя столбцами «employeeId» и «companyId», и попытался бы получить всех сотрудников с «employeeIds», соответствующими «companyId». Я не знаю, можно ли сделать то же самое в спящем режиме или нет. Если да, то как? Если нет, каково ваше решение?


Ответы:


1

Короткий ответ заключается в том, что вы можете настроить Hibernate для создания таблицы из тридцати для хранения ассоциации по вашему желанию. Этого можно добиться с помощью аннотации @JoinTable. Следуя вашему примеру, это будет примерно так:

@Entity
@Table(name = "company")
public class Company {
...
@OneToMany// or @ManyToMany
@JoinTable(name = "table_name",
    joinColumns = @JoinColumn(name="employeeId", referencedColumnName="id"),
    inverseJoinColumns = @JoinColumn(name="companyId",  referencedColumnName="id"))
private List<Employee> employeeList;

Теперь Hibernate создаст таблицу с именем table_name с двумя нужными столбцами и соответствующими ограничениями внешнего ключа для таблиц employee и company. Вы можете указать имена свободных ключей, используя @ ForeignKey тоже.

06.06.2015

2

Я считаю, что вам нужно внедрить отношения oneToMany между компанией и сотрудниками. Для этого можно использовать аннотацию Hibernate @OneToMany.

Вот пример, показывающий, как сделай это в спящем режиме

06.06.2015
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..