2017-04-24 6 views
1

カスタムRevisionEntityに「org.hibernate.envers.default_schema」を使用すると、このは、どのように私は休止状態-envers 4.2.8を使用しています

@Entity 
@RevisionEntity(CustomRevisionEntityListener.class) 
@Table(name = "REVINFO") 
public class CustomRevisionEntity { 
... 
} 

のような変更を行ったユーザーを追加するために自分のCustomRevisionEntityを作成しましたアプリケーションのコンテキストに

<prop key="org.hibernate.envers.default_schema">myschema_audit</prop> 

を追加して、監査テーブルのスキーマを変更しました。

監査テーブルはすべてスキーマmyschema_auditに作成されますが、REVINFOテーブルは残念ながらデフォルトスキーマmyschemaでまだ作成されています。

私の@Table注釈のためですか? schema属性を追加する必要がありますか?もしそうなら、どうすればそのアノテーションの対応するhibernateプロパティを使うことができますか?

@Table注釈を省略しようとしましたが、REVINFOテーブルは作成されません。

REVINFOテーブルがmyschema_auditで作成されているとはどうすれば実現できますか?

答えて

0

@Table注釈を省略すると、@Table注釈が存在しない場合、ORMで使用される命名方法に基づいて、CustomRevisionEntityなどと作成される可能性があります。

@Table(name = "REVINFO", schema = "myschema_audit")を指定すると、適切なスキーマに適切な名前のREVINFOというエンティティが正しく配置されます。

HTH。

+0

'@ Table'アノテーションを除外することについては正しいですね。 ハードコードされたスキーマを指定するのではなく、mavenプロファイルに応じて値が変更されるので、代わりに対応するhibernateプロパティを使用します。どのようにそうするのか? – Ole

+0

カスタムリビジョンエンティティは技術的にはORMエンティティなので、ORMのルールに従うため、Hibernate内で自動化された方法はありません。 Enversは、この場合、そのエンティティと結びつき、監査イベント中に行を挿入する方法を知っています。あなたができると思うのは、これを達成するためにコンパイルする前に、mavenのリソース置換パスを適用することです。もちろん、それ自体の欠点や懸念が伴います。 – Naros

+0

私が調べることができるのは、ユーザーがカスタムリビジョンエンティティを使用しており、そのスキーマ/カタログをORMのエンベロープのものではなくEnversのルールに従うように設定している場合、Enversのパス中にリビジョンエンティティのスキーマを_alter_できるかどうかです。 – Naros

関連する問題