У меня есть класс @Entity
с аннотацией @Id
и аннотацией @OneToOne
в одном поле. Обычно это не будет проблемой, но класс сущностей поля с этими аннотациями использует составной ключ. Это вызывает больше сложностей, чем я ожидал.
Вот класс сущностей, который создает проблему:
@Entity
public class ReportDetails implements Serializable {
@Id
@OneToOne
private MachineLine machineLine;
}
А вот класс сущностей MachineLine
, который используется как Идентификатор в ReportDetails
:
@Entity
@IdClass(MachineLine.MachineLineKey.class)
public class MachineLine {
@Id
@ManyToOne
private Machine machine;
@Id
private long lineIndex;
public static class MachineLineKey implements Serializable {
private Machine machine;
private long lineIndex;
}
}
Я исключил любые дополнительные поля и методы получения и установки из этих определений классов, чтобы сэкономить место.
Когда я пытаюсь запустить свое приложение, дает следующее исключение:
java.lang.IllegalArgumentException: This class [class ReportDetails] does not define an IdClass
Когда я ставлю аннотацию @IdClass
на ReportDetails
, тогда требуется определение отдельных полей любого класса, который я определяю в @IdClass
, например в MachineLine
. Однако я стараюсь избегать этого, чтобы вся сущность MachineLine
возвращалась всякий раз, когда сущность ReportDetails
извлекается из базы данных.
Есть ли способ иметь MachineLine
в качестве Поле идентификатора ReportDetails
, без необходимости определения дополнительных полей в ReportDetails
?