byte[]
フィールドをデータベースではなくローカルファイルシステムに保存しようとしています。JPAはデータベースではなくファイルシステムである
私はエンティティを永続化した後、私は、例えばのために、JPAの注釈に@Transient
@Entity
@Table(name = "screenshot")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Screenshot implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Lob
@Transient
@Column(name = "image", nullable = false)
private byte[] image;
@Column(name = "otherField", nullable = false)
private String otherField;
@Column(name = "otherField2", nullable = false)
private String otherField2;
}
を試みたが、しています@Transient
注釈のため、returnedEntity
image
プロパティは返されません。
Screenshot returnedEntity = screenshotRepository.save(entity);
しかし、私はインオーダーユニークIDを取得し、私のローカルのファイルシステムにのみ画像(バイナリ)フィールドを永続化するファイルパスの一部として、このIDを使用するには、最初のデータベースに永続化する必要があります。
エンティティをデータベースに保存する前に、固有のIDを持っていないという状況が発生しました。しかし、エンティティを保存した後、ローカルファイルシステムにファイルを保存するためにバイナリバイト[]データを失いました。
保存されたIDをバイナリバイト[]にリンクするのに適していないようです。
イメージデータが失われたということはどういう意味ですか?それはデータベースに保存されたかどうか?もしあなたがそれを保存したテーブルから戻ってくるのを止めるのは誰ですか?なぜ画像を@Idとマークしましたか? screenshotRepository.saveとは何ですか? (実装を示す) – CrazySabbath
'@ id'はタイプミスで編集しました。いいえ、データベースに保存するのではなく、ローカルのファイルシステムに保存します。 –
エンティティをデータベースに保存する前に、私は一意のIDを持っていないという状況に遭遇しました。しかし、私はエンティティ 'を保存した後。エンティティを永続させたくない場合は、なぜJPAを使用していますか?あなたのテーブルとそのデータを表示します。 – CrazySabbath