2017-02-23 45 views
0

Мой проект переносится с Grails на Java, поэтому у меня есть данные аудита в одной таблице, подталкиваемой плагином Grails Audit, теперь я использую Java envers для аудита в java. У меня есть следующие сомнения:Генерировать Hibernate Envers первичный ключ вручную и jpa, а также

-> Если я хочу вручную переносить данные из одной таблицы в разные таблицы аудита (в Java), как я могу вручную создать первичный ключ таблицы ревизий для данных истории вручную, который не будет сталкиваться с первичным ключом генерируется из аннотации Java? Что касается новых записей, я генерация первичного ключа, как показано ниже:

@Id 
    @GeneratedValue 
    @RevisionNumber 
    @Column(name = "ID") @NotNull 
    private Long revisionId; 

-> Любого другого способа передавать данные из одной таблицы аудита для сегрегированных таблиц аудита (в Java), а не делать это вручную?

Пожалуйста, дайте мне знать об этом.

Спасибо.

+0

Какой диалект вы используете? – Naros

+0

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect – Khushi

ответ

0

Envers должна создавать последовательность с именем REVISION_LISTENER на Oracle.

Поэтому вы должны иметь возможность использовать синтаксис Oracle SELECT REVISION_LISTENER.NEXTVAL, чтобы получить следующее значение последовательности и использовать его в поле REV как в вашей таблице аудита, так и в информационной таблице данных ревизии.

относится только к объекту DefaultAuditStrategy.

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

+0

Большое спасибо Naros .. Я не определил ни одну стратегию аудита, поэтому я могу использовать ваше решение, я проверю и дам вам знать результаты .. – Khushi