У меня есть следующее:
@Entity
@Table(name = "patient_identifiers")
public class PatientIdentity extends AbstractEntity {
@ManyToOne
@JoinColumn(name = "patient_id")
private Patient patient;
и
@Entity
@Table(name = "patients")
public class Patient extends AbstractEntity {
@OneToMany(mappedBy = "patient", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<PatientIdentity> urs;
Объекты сохраняются правильно, однако, если я использую объект Patient для получения списка, список будет нулевым. Я предполагаю, что это как-то связано с конфликтом двух отношений?
Причина структуры заключается в том, что иногда мы знаем только идентификаторы для пациента, поэтому мы можем создать объект пациента из идентификатора, но позже нам нужно использовать объект пациента для получения сведений о пациенте (включая идентификаторы) ,
В транснациональном сообществе я создаю объекты «Патология», «Пациент» и «Идентичность», поскольку все они получены из одного сообщения. Таким образом, пациент может иметь много идентичностей и патологий. Затем мне нужно переслать патологию в виде JSON поверх AMQP, включая идентификатор. Вот где это терпит неудачу: Pathology.getPatient.getPrimaryIdentity PrimaryIdentity является производным от Списка идентификаторов.
myIdentity = new PatientIdentity();
myIdentity.setUr(ur);
myIdentity.setCreated(new Date());
myIdentity.setPrimary(true);
patientIdentityService.create(myIdentity);
Patient myPatient = new Patient();
myPatient.setDateOfBirth(dateOfBirth);
myPatient.setDateOfDeath(dateOfDeath);
myPatient.setLastUpdated(new Date());
repo.saveAndFlush(myPatient);
myIdentity.setPatient(myPatient);
Я попробовал следующее, но только что закончил цикл исключений
myPatient.getUrs().add(myIdentity);
Я использую EclipseLink / Spring Data