Я пытаюсь сохранить объекты, созданные JAXB. Вот структура выборки:
@Column(name = "reporting_identifier")
private String reportingIdentifier;
@Column(name = "apply_quiet_time")
private boolean applyQuietTime;
@Embedded
private RecipientDetailsList recipientDetailsList;
Ниже приведена структура класса RecipientDetailsList
:
@ElementCollection(targetClass=String.class)
private List<RecipientDetails> recipientDetails;
Теперь класс RecipientDetails
имеет один конструктор аргументов, который принимает строку. Эта строка я хочу сохранить в базе данных как часть всей записи. Я вижу
org.hibernate.InstantiationException: нет конструктора по умолчанию для объекта: RecipientDetailsList
исключение, когда я пытаюсь сохранить объект. У меня есть два вопроса:
-
Есть ли у нас какая-нибудь работа над этим исключением? Я не могу изменить класс, поскольку он предназначен для JAXB marshalling/unmarhsalling. Могу ли я каким-либо образом сохранить объекты без изменения структуры? Кроме того, меня интересует только сохранение первой записи списка, на который ссылается recipientDetails, поскольку я хочу только одну строку для объекта. Я хочу, чтобы он игнорировал остальные записи, если у него более 1 записи. Возможно ли это?
-
Является ли этот хороший дизайн использовать аннотацию непосредственно в классах, которые генерируются JAXB? Должен ли я создавать другие классы (и, возможно, mappers/converters) только для хранения и извлечения информации?