Мы используем OpenJPA 2.3.0. У нас есть объекты DAO с свойствами типа Date и отношениями с другими объектами DAO. Мы извлекаем данные из базы данных, сопоставляем их с аналогичными объектами DTO и передаем их через провод. Мы также получаем те же объекты DTO по проводу, набираем их обратно в DAO и сохраняем данные в БД.OpenJPA сохранение значений NULL для сериализованных объектов
У нас возникли проблемы с полями «Дата», когда клиент NULL отправляет поле «Дата», и мы сохраняем это изменение, OpenJPA не обновляет поле до NULL, потому что он не может быть уверен, что это значение было загружено в первую очередь.
Мы попытались в том числе этот параметр persistence.xml:
<property name="openjpa.DetachState" value="fetch-groups"/>
Какой фиксированной даты спасительную проблемы, но затем вызвало проблемы на других лиц. Эта проблема была связана с объектами DAO, которые ссылались на другие объекты DAO (с помощью ссылки ManyToOne или OneToOne и т. Д.). Поскольку эти ссылочные объекты не были загружены изначально, когда мы сохраняли родительский объект, ссылка на дочерние элементы была бы NULL, и поэтому OpenJPA удалил бы дочернюю ссылку (каскадное сохранение было включено для сохранения).
Чтобы обойти эту вторую проблему, мы включили надежную загрузку для этих дочерних объектов, но это привело к загрузке большого количества дополнительных данных, когда это не всегда было необходимо. Мы должны отключить это, поскольку это вызывает слишком большую нагрузку на БД.
Мне любопытно узнать, нашел ли кто-нибудь еще более элегантное решение для сохранения значений NULL для свойств Date для объектов DAO, которые сериализованы.
Класс для справки:
@Entity
public class Parent implements Serializable {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "child", fetch = FetchType.EAGER)
private List<ChildType> children;
@Temporal(TemporalType.DATE)
private Date endDate;
...
У вас есть„не пустой“ограничение на столбце БД, которая содержит дату –
Там какая-то дискуссия, вокруг которых предлагают альтернативные варианты: 1. HTTP: //openjpa.208410.n2.nabble. com/Null-field-not-persisted-for-Dates-td5993519.html 2. http://stackoverflow.com/questions/2453671/nullable-date-column-merge-problem 3. https: //issues.apache. org/jira/browse/OPENJPA-2559 –
@AlanHay Эти ссылки в значительной степени привели нас по тому пути, которым мы следовали выше. Проблема, которая у меня есть, - это компромисс, основной из которых - загрузка агара дополнительных данных. –