jpa relations OneToMany ManyToOne

174
06 ноября 2017, 19:58

Всем доброго времени. Есть рабочий.

@Entity
@Table(name = "emoloyee")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "vacation_id", nullable = false)
private EmpVacation vacation;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn (name = "function_id", nullable = false)
private CompanyRole function;

У него есть должность в компании и данные по отпуску. Отпуск:

@Entity
@Table(name = "vacations")
public class EmployeeVacation {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Temporal(TemporalType.DATE)
private Date start;
@Temporal(TemporalType.DATE)
private Date end;
@OneToOne(mappedBy = "vacation")
private Employee emp;

данные по должности:

@Entity
@Table(name = "company_roles")
public class CompanyRole {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "function")
private Set<Employee> empSet;
@Column(unique = true, nullable = false)
private String name;

В company_roles хранится справочник по должностям, заранее заполненный. Доступ к объектам через extends JpaRepository. При попытке добавить рабочего на позицию из БД полученную методом findByName или findOne, JPA пытается еще раз записать в таблицу company_roles и вылетает ошибка дубликата названия должности в company_roles. добавляю так: создаю объект рабочего, добавляю ему новый объект отпуска, и беру из базы объект должности. Если сделать это все в 1 транзакции через @Transactional, то работает нормально, но как же ситуация, когда я создал объект где - то и передал его в сервис для сохранения, при создании используя сервис должностей для получения существующей должности? Каждый раз в сервисе рабочих разбирать полученный объект и проверять валидность полей по связным таблицам? спасибо за помощь :)

READ ALSO
C# WPF DataGrid сортировка

C# WPF DataGrid сортировка

Как сделать чтобы последняя строка в DataGrid не сортировался вместе с остальными? На пример все строки сортируются по возрастанию, а последняя...

345
Contain не находит элемент в List

Contain не находит элемент в List

Доброго времени сутокИмеется следующий код:

286
Соединение ASP.Net Mvc 5 с MySQL [требует правки]

Соединение ASP.Net Mvc 5 с MySQL [требует правки]

Проблема с типами как я понял

244
Включение ссылок на сборки .Net в UWP

Включение ссылок на сборки .Net в UWP

Возникло затруднение с включением ссылок на сборки определенные в стандартной библиотеке в приложении UWPВ консольном приложении я мог просто...

301