1

Map<MyEnum, String>監査対象として宣言されたフィールドがあります。マップ内の要素の1つに変更が加えられると、enversは1つではなく、anADDとaの2つの編集を生成します。これは、2つの編集があるため、監査テーブルに挿入しようとしたときに制約違反を意味します。同じリビジョンの単一エンティティの単一フィールドの場合。DELMOD

テーブルのキーの一部を作成することで問題を回避できると思いrevision_typeます(エンティティごとにフィールドごとに各タイプを1回編集できます)が、それは醜いハックのようですが、それを追跡できなくなるという事実もあります最初に起こった、そしてそれがちょうど間違っているという事実。

ちなみに、フィールドは適切に永続化されています...失敗するのは監査レコードだけです。

フィールドの宣言:

@ElementCollection
@CollectionTable(name = "configuration_property", joinColumns = @JoinColumn(name = "configuration_id"))
@MapKeyColumn(name = "property_name")
@Column(name = "property_value", columnDefinition = "longtext")
@MapKeyEnumerated(EnumType.STRING)
private Map<ConfigurationProperty, String> properties = new EnumMap<ConfigurationProperty, String>(ConfigurationProperty.class);

Hibernatev3.5.6を使用しています。

これに関するバグレポートを見つけることができなかったので、私は何か間違ったことをしていると思っています...何かアイデアはありますか?

4

1 に答える 1

0

AbstractCollectionMapper.mapCollectionChangesを見ると、現在の実装では追加と削除のみが行われます。マップはタプルのコレクションとして表示されると思います:(キー、値)、したがって変更はありません。バグはスキーマ生成にあり、キーが適切に生成されるはずです。JIRAバグを報告してください-https: //hibernate.onjira.com、Enversコンポーネント。

于 2012-07-04T07:34:51.333 に答える