У меня есть следующая сущность:
@Entity
@Data
@IdClass(ProjectEmployeeId.class)
public class ProjectEmployee {
@Id
@ManyToOne
private Project project;
@Id
@ManyToOne
private Employee employee;
@ManyToOne
private ProjectEmployeeRole projectEmployeeRole;
}
Класс id, который определяет составной первичный ключ для вышеуказанной сущности:
@Data
public class ProjectEmployeeId implements Serializable {
private Project project;
private Employee employee;
}
То есть хранилище:
public interface ProjectEmployeeRepository
extends CrudRepository<ProjectEmployee, ProjectEmployeeId> {
}
Я пытался сохранить projectEmployee:
projectEmployeeRepository.save(projectEmployee);
, что выдает мне следующую ошибку:
Resolved [org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.Long' to required type 'de.employee.Employee' for property 'employee'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.Long' to required type 'de.employee.Employee' for property 'employee': no matching editors or conversion strategy found]
Я впервые использую составной первичный ключ, поэтому я Я не уверен, как это должно работать. Проблема, вероятно, исходит от определения CrudRepository<ProjectEmployee, ProjectEmployeeId>
. Второй аргумент должен представлять идентификатор. Но ProjetEmployee
не имеет одного первичного ключа, вместо этого он имеет два, поэтому я подумал, что должен добавить класс id в аргумент id, который не работает. Как сохранить сущность с составным первичным объектом, используя ключ IdClass с CrudRepository?