Был запрос на использование ассоциаций и других объектов внутри встраиваемого объекта.Ниже приводится объект сотрудника
@Entity
public class Employee implements Serializable {
@NaturalId
@Column(name="ID", nullable=false, unique=true)
private long id;
}
Объект оценки предназначен для регистрации оценки сотрудников.Таким образом, эта сущность будет иметь многозначные связи с другими сущностями, такими как employee, appraisal_year и appraisal_type.Эти три составляли бы составной ключ для оценочной таблицы.Итак, я решил создать класс @Embeddable.
@Embeddable
public class AppraisalKey implements Serializable {
private static final long serialVersionUID = 1L;
@ManyToOne(fetch = FetchType.LAZY, optional=false)
@JoinColumn(name = "EMPLOYEE_ID", referencedColumnName = "ID")
private Employee employee;
@ManyToOne(fetch = FetchType.LAZY, optional=false)
@JoinColumn(name = "APPRAISAL_YEAR")
private AppraisalYear appraisalYear;
@ManyToOne(fetch = FetchType.LAZY, optional=false)
@JoinColumn(name = "APPRAISAL_TYPE")
private AppraisalType appraisalType;
}
@Entity
public class Appraisal {
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="ID", unique=true)
private long id;
@EmbeddedId
private AppraisalKey appraisalKey;
}
Таким образом, у меня будут ассоциации с другими сущностями, а также составной ключ.Является ли хорошей практикой использование ассоциаций и других объектов внутри встраиваемого объекта?Есть ли лучший или более простой способ достижения этой цели, кроме описанного выше?