Код: Выделить всё
@Entity
@Audited
class A{
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE,
CascadeType.PERSIST, CascadeType.REFRESH})
@JoinTable(...)
private List b;
// Constructors, Getters, etc ...
}
@Entity
@Audited
String fieldB;
@ManyToMany(fetch as above, mappedBy="a")
@JoinTable(...)
private List a;
@ManyToMany(fetch as in A.b)
@JoinTable(...)
private List c;
// Constructors, Getters, etc ...
}
@Entity
@Audited
@class C{
String fieldC;
@ManyToMany(fetch as in A.b, mappedBy="c")
@JoinTable(...)
private List b;
// Constructors, Getters, etc ...
}
Проблема возникает, когда у меня есть следующая история изменений:
Редакция
Описание
Создает аудит в
1
Создать
А
2
Создать Б
Б
3
Добавьте B к A
A,B
4
Создать C
C
5
Добавьте C к B
B,C
...
Некоторые несвязанные изменения
x
Изменить C
C
...
Некоторые несвязанные изменения
y
Изменить Б
B
...
Некоторые несвязанные изменения
z
Отметка времени, которую я хочу получить
...
Некоторые несвязанные изменения
Что я Ожидается, что это произойдет, когда при получении состояния любого из объектов во временной метке z нужно получить A на версии 3, B на rev y и C на rev x (т.е. что Envers извлекает новейшее состояние всех объектов на момент извлечения).
Вместо этого происходит то, что если я извлекаю A с отметкой времени z, A и B извлекаются с версией 3, C является нулевым. Если я получаю C, A находится в версии 3, C находится в состоянии x, а B находится в состоянии 5.
Итак, кажется, что когда я получаю объект в версии z, все связанные вместо этого объекты извлекаются с ревизией z', которая является последней ревизией самого рассматриваемого объекта.
Это вопрос неправильных свойств или есть другое элегантное решение, которое могло бы помочь мне получить текущее состояние сущности и ее отношений в данный момент времени?
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-entities
Мобильная версия