Hibernate Envers не сохраняет внешний ключ в таблице аудитаJAVA

Программисты JAVA общаются здесь
Anonymous
Hibernate Envers не сохраняет внешний ключ в таблице аудита

Сообщение Anonymous »

Я использую Hibernate Envers для аудита отношений @OneToMany между двумя объектами: ParentEntity и ChildEntity.
Я не использую @ManyToOne на стороне ChildEntity. Вместо этого я сохраняю внешний ключ непосредственно как целочисленный родительский идентификатор.
В основной таблице child_entity значение родительского_id сохраняется правильно.
Однако в таблице аудита (

Код: Выделить всё

child_entity_aud
), это поле всегда имеет значение NULL, даже если оно помечено как @Audited.
Использование @ManyToOne в моем случае не вариант — я хочу сохранить только необработанный идентификатор без присоединения или загрузки полной родительской сущности.
Я также пробовал @AuditJoinTable, но, насколько я понимаю, это применимо только к коллекциям и «многие-ко-многим» отношения.
Как я могу заставить Envers сохранять внешний ключ (

Код: Выделить всё

parentId
) в таблицу аудита без использования @ManyToOne?

Код: Выделить всё

@Entity
@Audited
@Table(name = "parent_entity")
public class ParentEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "parent_id") // FK in child
private List children = new ArrayList();
}

@Entity
@Audited
@Table(name = "child_entity")
public class ChildEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

// Just a raw FK, no @ManyToOne
@Column(name = "parent_id")
@Audited
private Integer parentId;

private String data;
}
Наблюдаемое поведение: Как я могу заставить это работать без введения ассоциации @ManyToOne?

Подробнее здесь: https://stackoverflow.com/questions/798 ... udit-table

Вернуться в «JAVA»