ユーザーがファイルをアップロードできる webapp があり (を介してmultipart/form-data
)、Hibernate を使用して DB にメタデータと共に保存されます ( @Entity class Document
)。
content
ターゲット テーブルには、ファイルの内容が保存されるBLOB 列があります。ファイルをアップロードするユーザーは、GWT ベースの UI で一部のメタデータ (元のファイル名など) を変更できます。そのために、Dozerを使用してインスタンスをインスタンスに変換しDocument
ます。インスタンスにはフィールドClientDocument
がなく、GWT でシリアライズ可能です。content
変更されたClientDocument
インスタンスがブラウザーから到着したら、それを元に変換してDocument
実行します。
ClientDocument document = ...;
Document entity = dozerBeanMapper.map(document, Document.class);
Session session = sessionFactory.getCurrentSession();
session.merge(entity);
この時点で、Dozer は明らかに対応する BLOB データを入力していないため、entity
の列はクリアされます。content
実行中にこの特定の BLOBcontent
列を更新しないようにする方法はありますmerge()
か? Not committing an hibernate entity field to the DB を見てきましたが、バックエンドで他の操作のために BLOBをフェッチする必要があるため、@Transient
解決策はうまくいきません。content
助言がありますか?