Итак, в этом примере сценария у меня есть DTO, а рабочий DTO, работники в этом контексте отделены отделом, а работник может быть только внутри одного отдела. Важно отметить, что Worker {id='123-123-123', department='a'}
отличается от Worker {id='123-123-123', department='b'}
, несмотря на то, что оба имеют один и тот же идентификатор.Спящий режим: повторная колонка при сопоставлении
у меня есть следующие настройки класса, чтобы попробовать и отдельные функции по id
и department
public class IdAndDepartmentPK implements Serializable {
private String id;
private String department;
public IdAndDepartmentPK() {}
...
}
Этот ключ класса разделяется между DTOS, которые требуют как Worker
«s id
и department
, ниже приведены два DTOS, что вызывают проблему.
@Entity
@IdClass(IdAndDepartmentPK.class)
public class AttendencetDto {
@Id private String id; // This is a departmentally unique attendenceId
@Id private String department;
@Column private String workerId;
@JoinColumns({
@JoinColumn(name = "workerId"),
@JoinColumn(name = "department")
})
@ManyToOne(fetch = FetchType.EAGER)
private WorkerDto workerDto;
....
}
@Entity
@IdClass(IdAndDepartmentPK.class)
public class WorkerDto {
@Id
private String id;
@Id
private String department;
...
}
WorkerDto
не нужно иметь знания AttendencetDto
, но AttendencetDto
, это нужно иметь доступ к WorkerDto
и другие данные, которые он содержит.
Hibernate жалуется, что поля, такие как workerId
, должны быть сопоставлены с insert = "false" update = "false", но если бы я должен был это сделать, я не смог бы сохранить эти значения в базе данных.
Я действительно хочу иметь эти поля, а также наличие WorkerDto
, возможно ли это?
Зачем вам нужен '@Column private String workerId;'? Вы можете связать свое предприятие с помощью workerDto. – ByeBye
Но если у меня есть таблица 'attendence', например, с столбцом« worker_id », будет ли спящий режим вставлять данные туда без меня, указывая этот столбец в dto? – Dominic
Если есть соединение с внешним ключом, вы можете просто установить «workerDto», и после того, как транзакция будет закрыта, ваши объекты будут связаны. – ByeBye