Envers для ManyToOne с JoinColumn проверяет неправильный столбец

При аудите внешнего ключа Envers, похоже, игнорирует аннотацию JoinColumn.

Например. У меня есть такой простой класс:

@Audited
@Entity
public class Address {
    @Id
    @GeneratedValue
    private int id;

    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
    @ManyToOne
    @JoinColumn (name="addressTypeFk", referencedColumnName="EntityId",nullable=false)
    private AddressTypeLookup addressType;

Что ссылается на такую ​​таблицу поиска:

@Entity
public class AddressTypeLookup
{
    @Id
    @GeneratedValue
    private int id;
    private String descr;
    private int entityId;

Обратите внимание, что атрибут addressType в Address присоединяется к столбцу entityId, а не столбцу «id» первичного ключа. Также обратите внимание на использование RelationTargetAuditMode.NOT_AUDITED: я хочу проверять внешний ключ, но не хочу проверять изменения AddressTypeLookup. Проблема в том, что когда Envers записывает изменения внешнего ключа, он записывает значение «id» первичного ключа AddressTypeLookup, а не entityId. Как заставить Envers записывать используемые значения entityId?

[В случае, если вам интересно, зачем мне это: у нас есть база данных поисковых данных (она же основные / справочные данные). Он записывает историю: все строки имеют даты начала и окончания. Столбец id действительно уникален; entityId идентифицирует конкретную вещь - например, все версии определенного типа адреса. Все таблицы поиска реплицируются в базу данных приложения, но реплицируются только текущие данные, а не исторические данные. ]


person BigOakTree    schedule 11.03.2013    source источник


Ответы (1)


Это может быть ошибка, связанная с пересечением использования referencedColumnName и RTAM.NOT_AUDITED. Отправьте отчет об ошибке @ https://hibernate.onjira.com/, envers component.

person adamw    schedule 12.03.2013
comment
Спасибо. Теперь я зарегистрировал это на сайте jira спящего режима: HHH-8066 - person BigOakTree; 13.03.2013