@ElementCollection Enum in Embeddable

63
6

Я пытаюсь использовать elementCollection в встраиваемом, но JPA2.0, похоже, игнорирует его.

Если я вхожу в отладку, я вижу, что коллекция в embeddable заполнена, но она не сохраняется, и JPA не бросает никаких исключений. Кажется, это просто игнорирует его по какой-то причине, которую я не могу найти.

Если я помещаю этот элемент в базовый объект (содержащий встраиваемый), тогда коллекция будет сохранена.

Почему это? Как я могу это изменить?

Пример кода:

@Entity
@Table(name = "PRELEVATION_SURVEY")
public class PrelevationSurvey extends Domain {

@Embedded
private GeneralPatientInformation generalPatientInformation;

}

@Embeddable
public class GeneralPatientInformation {

@ElementCollection(
fetch = FetchType.EAGER)
@CollectionTable(name = "CAUSES_OF_DEATH",
joinColumns = @JoinColumn(name = "SURVEY_ID"))
@Column(name = "CAUSE_OF_DEATH")
@Enumerated(EnumType.STRING)
private List<CauseOfDeath> causesOfDeath;

}

И снова.. Причины смерти сохраняются, если я помещаю их в PrelevationSurvey, но не в том случае, если я помещу их в embedabble.

спросил(а) 2021-01-28T00:55:46+03:00 4 месяца, 3 недели назад
1
Решение
63

Исправлено это с помощью следующего кода:

public PrelevationSurvey save(PrelevationSurvey prelevationSurvey) {
PrelevationSurvey attachedPrelevationSurvey = super.save(prelevationSurvey);
attachedPrelevationSurvey.getGeneralPatientInformation().setCausesOfDeath(prelevationSurvey.getGeneralPatientInformation().getCausesOfDeath());
return attachedPrelevationSurvey;
}

Метод сохранения вызывает "entityManager.merge(entity)". Я сам собираюсь объединить коллекцию.

См. Также: https://hibernate.atlassian.net/browse/HHH-6143

ответил(а) 2021-01-28T00:55:46+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема