Почему переопределение меняет имена столбцов

Я использовал реализацию прослушивателя rev по умолчанию, и, как и ожидалось, столбцы в моей таблице REVINFO были: revtstmp и rev.

Однако, когда я отменил значение по умолчанию, все, что я сделал, это:

... MyRevisionEntity extends DefaultRevisionEntity

имена этих столбцов были изменены на «timestamp» и «id».

Кто-нибудь знает, почему?

Использование конвертов 4.1.5_Final...

** РЕДАКТИРОВАТЬ ** Поскольку никто еще не ответил, я добавляю дополнительную информацию.

Созданный Адамом Варски класс DefaultRevisionEntity определяет только два члена: private int id;

и частная длинная временная метка;

Таким образом, я понимаю, что когда я расширяю этот класс, это будут имена столбцов, которые я должен ожидать. Однако «непонятный» вопрос: почему, когда я НЕ расширил значение по умолчанию, столбцы были другими (rev и revtstmp соответственно), а также то, что сказано в документации?

Спасибо за любую помощь!


person user1609258    schedule 04.10.2012    source источник


Ответы (1)


Короткий ответ заключается в том, что, когда вы не расширяете, Envers использует конфигурацию по умолчанию, в которой эти имена столбцов жестко запрограммированы, например. они не происходят из метаданных класса сущностей. Когда вы расширяете DefaultRevisionEntity, Envers по умолчанию использует стандартные стратегии именования ORM.

С технической точки зрения, виновником здесь является RevisionInfoConfiguration.

В рамках начальной загрузки Envers вызывается метод #configure() этого класса, который ищет в определенных объектах реализацию пользовательской версии объекта. Если реализация обнаружена, Envers в основном отображает класс, как и любой другой объект.

Но если пользовательская реализация не обнаружена, вызывается generateDefaultRevisionInfoXmlMapping, который автоматически создает соответствующую структуру XML, в которой используются жестко закодированные имена столбцов для аннотированных полей @RevisionNumber и @RevisionTimestamp; следовательно, вы получаете столбцы с именами REV и REVTSTMP.

Я зарегистрировал задачу JIRA HHH-11325, чтобы решить проблему.

person Naros    schedule 09.12.2016