У меня есть три таблицы EmployeeDepartment, EmployeeGroup и EmpplyeeDetails Table. Таблица EmployeeDepartment имеет первичный ключ DepartmentId и столбец groupId, а EmployeeGroupTable имеет первичный ключ groupid, который должен быть сгенерирован из последовательности данных GroupIdGenerator.
EmployeeDetails имеет два первичных ключа: groupid и employeeid. Groupid должен быть таким же, как и в предыдущей таблице
Эти значения во всей таблице следует вставить в одну транзакцию.
Можете ли вы помочь мне с правильным сопоставлением сущностей JAP?
Я уже пробовал использовать разные комбинации сгенерированного значения и генератора последовательности, но не смог сохранить данные в таблицу.
@Entity
@Table(name="EMPLOYEE_DEPARTMENT")
public class EmployeeDepartment {
@Column(name = "DEPARTMENT_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"departmentid-gen")
@Id
@NotNull
@SequenceGenerator(name = "departmentid-gen", sequenceName =
"DEAPARTMENT_ID_GENERATOR" )
private long departmentId;
@OneToOne(mappedBy = "employeeGroup")
private EmployeeGroup employeeGroup;
}
@Coulmn(name="GROUP_ID")
private long groupId;
@Entity
@Table(name="EMPLOYEE_GROUP")
public class EmployeeGroup {
@Column(name = "GROUP_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"groupid-gen")
@Id
@NotNull
@SequenceGenerator(name = "groupid-gen", sequenceName =
"GROUIP_ID_GENERATOR" )
private long groupId;
@OneToMany(mappedBy = "employeeDetail")
private List<EmployeeDetail> employeeDetails;
@OneToOne
@JoinColumn(name = "DEPARTMENT_ID", insertable=false ,
updatable=false)
private EmployeeDepartment employeeDepatment;
}
@Entity
@Table(name = "EMPLOYEE_DETAIL")
@IdClass(EmployeeID.class)
public class EmployeeDetail {
@ManyToOne
@JoinColumn(name = "GROUP_ID", insertable=false , updatable=false)
private EmployeeGroup employeeGroup;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"groupid-gen")
@SequenceGenerator(name = "groupid-gen", sequenceName =
"GROUIP_ID_GENERATOR" )
@Column(name = "GROUP_ID")
@Nonnull
private Long groupId;
@Id
@Nonnull
@Column(name = "EMPLOYEE_ID")
private Long employeeId;
}
public class EmployeeId{
private Long groupId;
private Long employeeId;
public EmployeeId(final Long groupId, final Long employeeId) {
this.groupId = groupId;
this.employeeId = employeeId;
}
public EmployeeId() {
}
}
Ожидаемый результат в этих 3 таблицах должен иметь правильные значения, например.
Таблица EmployeeDepartment
DepartmentID GroupId
1 1
Таблица EmployeeGroup
GroupID
1
Таблица EmployeeDetail
GroupId EmployeeId
1 1
1 2
1 3
Фактические результаты ниже
Таблица EmployeeDepartment
DepartmentID GroupId
1 0
Таблица EmployeeGroup
GroupID
1
Таблица EmployeeDetail
GroupId EmployeeId
2 1
3 2
4 3