У меня есть несколько классов в моем проекте, которые обрабатываются Hibernate, некоторые проверяются Envers, некоторые нет. Теперь, когда я пытаюсь сохранить некую неаудитированную сущность, я получаю следующее:
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such table: audit_etc_etc)
Некоторые, вероятно, могут подумать, что у меня просто нет таблицы аудита в моей базе данных, но Envers не должен даже пытаться искать эту таблицу, потому что сущность не проверяется. Мои классы выглядят так:
@Entity
class A {
/* some 'normal' attributes here */
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
AuditedEntity e;
List<B> listOfBs;
}
@Entity
class B {
/* more 'normal' attributes here */
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
AuditedEntity e; // and some more references to audited entities
A anA;
List<C> listOfCs;
}
@Entity
class C {
/* more 'normal' attributes here */
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
AuditedEntity e; // and some more references to audited entities
B anB;
}
Таким образом, каждый класс содержит список дочерних элементов, которые имеют ссылку на своего родителя. Ни один из этих классов не отмечен аннотацией @Audited
, но у них есть ссылки на некоторые проверяемые объекты. Тем не менее, каждая из этих ссылок помечена аннотацией @Audited(targetAuditMode = RelationTargetAuditMode. NOT_AUDITED)
.
Я также не нашел ничего необычного в моем файле hibernate.cfg.xml, только детали подключения, параметры envers, сопоставления классов и некоторые другие параметры гибернации.
Что здесь не так и как я могу исправить эту проблему, возникающую при сохранении?
(Примечание: на данный момент я тестировал это только для классов A и B, но я предполагаю, что попытка сохранить экземпляр C вызовет то же исключение)
Обновление:
При включении show_sql
отображается следующее, когда я пытаюсь сохранить экземпляр B:
Hibernate: update table_b set all_attributes=? where idB=?
Hibernate: insert into audit_description (timestamp, description) values (?, ?)
Hibernate: insert into audit_table_b (revision_type, attributes, moreAttributes, revision) values (?, ?, ?, ?)