#java #spring #hibernate #jpa #hibernate-envers
#java #spring #спящий режим #jpa #hibernate-envers
Вопрос:
Я использую Spring Boot 1.3.2 и Spring Data JPA 1.9.4 с базой данных MS Sql server2014 для процесса для процесса сопоставления отношений «многие ко многим».
У меня есть две таблицы с сущностями Book amp; Publisher. там, где они имеют отношения «многие ко многим», поставляются с таблицей BookPublisher и объектом BookPublisher.
Я использовал hibernate envers 4.3.3 final для аудита каждого объекта. Таблицы Book_AUD и Publisher_AUD и BookPublisher_AUD создаются автоматически путем размещения аннотации @Audited для каждого объекта.
Book_AUD и Publisher_AUD работают должным образом для аудита вставки, обновления и удаления.
Запись сохраняется в таблице объединения при сохранении записи в таблице Book с набором записей publisher. Но аудит происходит только при вставке таблицы BookPublisher_AUD, а не при обновлении удаления.
Я использовал аннотацию @AuditJoinTable для аудита таблицы сопоставления отношений, как показано ниже.
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "BookPublisher", joinColumns = @JoinColumn(name = "BookId", referencedColumnName = "BookId"), inverseJoinColumns = @JoinColumn(name = "PublisherId ", referencedColumnName = "PublisherId"))
@WhereJoinTable(clause = "isActive = 1 ")
@AuditJoinTable
private Set<Publisher> publishers;
Есть ли какой-либо способ провести аудит таблицы реляционных сопоставлений в hibernate envers или какая-либо ошибка в использовании аннотации @AuditJoinTable?
Комментарии:
1. Во-первых,
@AuditJoinTable
следует использовать только в том случае, если вы хотите присвоить таблице соединений определенное имя, в противном случае оно ничего не делает, envers уже знает, что делать с a@JoinTable
. Я не совсем понимаю, как вы определяете сбой аудита, можете ли вы опубликовать примеры данных в своих таблицах? ваши конфигурации гибернации? какие-либо свойства envers по умолчанию изменены?2. Я очень новичок в hibernate envers, поэтому я просто добавил аннотацию @Audited в объект Book и publisher для аудита, но не в объект BookPublisher. Я удалил аннотацию AuditJoinTable в элементе сопоставления коллекций в сущности Book, но бесполезно. Я добавил только три свойства в свой файл свойств приложения, как показано ниже spring.jpa.hibernate.ddl-auto=обновить spring.jpa.properties.org.hibernate.envers.audit_table_suffix=Аудит Тем не менее, я не выполняю аудит, чтобы зафиксировать обновление и удаление записей. Итак, не могли бы вы привести примерный пример кода для доказательства решения.
3. Я внес изменения в код, теперь аудит происходит только при вставке и удалении объекта collection publisher из объекта Book через репозиторий Book. Есть ли какие-либо ограничения в hibernate envers, чтобы не поддерживать прямое взаимодействие с репозиторием BookPublisher?
4. @SatishKonda здравствуйте, я столкнулся с той же проблемой, вы нашли какое-либо решение по этому поводу?