У меня есть следующие 2 сущности:
@Entity(name = "Employee")
@Table(name = "EMPLOYEE")
public class Employee implements Serializable {
@Id
@Column(name = "EMP_ID", insertable = true, updatable = false, nullable = false)
private int id;
и
@Entity(name = "Draw")
@Table(name = "DRAW")
public class Draw extends AuditableEntity {
@Id
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "EMP_ID", referencedColumnName = "EMP_ID")
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
org.hibernate.annotations.CascadeType.MERGE})
private Employee employee = null;
Скажем так, они хотят, чтобы это моделировалось. Это отношение OneToOne, как указано. Однако, когда я иду на тестирование, я получаю следующую ошибку:
вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'sessionFactory', определенным в ресурсе пути к классу [META-INF / spring / datasource-context.xml]: сбой вызова метода init; вложенным исключением является org.hibernate.MappingException: составной класс-идентификатор должен реализовывать Serializable: com.myprojects.tet.data.entity.Draw
Почему ключ employee
в Draw
интерпретируется как составной идентификатор? Также, как я могу исправить эту ошибку. Я прочитал , что указанная сущность должна быть сериализуемой, но также должна реализовывать методы equals
и hashCode
(которые я еще не реализовал). Должна ли реализация этих двух исправить эту ошибку?
Редактирование для наглядности:
У меня есть две смоделированные таблицы: EMPLOYEE
и DRAW
:
EMPLOYEE
имеет: целое число emp_id
, а также множество других столбцов.
DRAW
имеет: целое число emp_id
, целое число totalPoints
.
Таблица розыгрыша будет заполняться и очищаться каждый раз, поэтому столбец totalPoint
не может быть в таблице EMPLOYEE
. Я не уверен, правильны ли мои отношения к сущности (т. Е. Есть сущность employee
в качестве идентификатора для draw
).