ユーザーがファイルをアップロードできる 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
助言がありますか?