Я не использую @ManyToOne на стороне ChildEntity. Вместо этого я сохраняю внешний ключ непосредственно как целочисленный родительский идентификатор.
В основной таблице child_entity значение родительского_id сохраняется правильно.
Однако в таблице аудита (
Код: Выделить всё
child_entity_audИспользование @ManyToOne в моем случае не вариант — я хочу сохранить только необработанный идентификатор без присоединения или загрузки полной родительской сущности.
Я также пробовал @AuditJoinTable, но, насколько я понимаю, это применимо только к коллекциям и «многие-ко-многим» отношения.
Как я могу заставить Envers сохранять внешний ключ (
Код: Выделить всё
parentIdКод: Выделить всё
@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 - всегда имеет значение null
Код: Выделить всё
child_entity_aud.parent_id
Подробнее здесь: https://stackoverflow.com/questions/798 ... udit-table
Мобильная версия