У меня есть данные, хранящиеся в Spring сотрудников и «планы личного развития». Сотрудник является доминирующим классом, так сказать. Это выглядит так:
@Entity(name = "employee")
@Table(name = "EMPLOYEE")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "EMPLOYEE_ID")
private int id;
// etc...
}
Персональный план развития выглядит следующим образом:
@Entity(name = "pdp")
@Table(name = "PDP")
public class PersonalDevelopmentPlan implements Serializable {
@Id
@GeneratedValue
@Column(name = "PDP_ID")
private int id;
@ManyToOne(optional = false)
@JoinColumn(name = "EMPLOYEE_ID")
private Employee employee;
// etc..
}
В базе данных он хранится в виде ссылки на внешний ключ из PDP -> Employee
.
Я хочу иметь возможность загружать PDP, как он есть в базе данных, только с идентификатором сотрудника, но я всегда получаю весь объект Employee со всеми атрибутами. Как мне это сделать?
Я пытался @ManyToOne(fetch = FetchType.Lazy)
, но при загрузке я получаю следующую ошибку:
Ошибка определения типа: [простой тип, класс org.hibernate.proxy .pojo.bytebuddy.ByteBuddyInterceptor]; вложенное исключение - com.faster xml .jackson.databind.ex c .InvalidDefinitionException: не найден сериализатор для класса org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor и не обнаружены свойства для создания BeanSerializer (чтобы избежать исключения, отключите SerializationFeature.FAIL_ON_EMPTY_BEANS) (через цепочку ссылок: java .util.ArrayList [0] -> nl.kars.lms.model.pdp.PersonalDevelopmentPlan ["employee"] -> nl.kars.lms.model.Employee $ HibernateProxy $ $ AAwzPX4I ["hibernateLazyInitializer"])
Что я делаю не так?