Я не использую @ManyToOne на стороне ChildEntity. Вместо этого я сохраняю внешний ключ непосредственно как целочисленный родительский идентификатор.
В основной таблице child_entity значение родительского_ид сохраняется правильно.
Однако в таблице аудита (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;
}
child_entity.parent_id сохраняется правильно
child_entity_aud.parent_id всегда имеет значение null
Как я могу заставить это работать без введения ассоциации @ManyToOne?>
Подробнее здесь: https://stackoverflow.com/questions/798 ... udit-table
Мобильная версия