2

次のエンティティを想定します。

@Entity
public class MyEntity {
    @Id
    private Long id;

    private File path;

    private String someString;
}

このようなテーブルにマップしたいもの:

CREATE TABLE (id BIGINT, path VARCHAR, somestring VARCHAR);

java.io.File問題は、 (またはjava.nio.file.Path)からファイルパスを表す単純な文字列へのマッピングです。このようなマッピングはJPAで可能ですか?

もちろん、path文字列として定義し、クライアントにFileorPathオブジェクトを作成させることもできます。ただし、これらのオブジェクトをエンティティに直接提供する方がはるかに便利です。

4

1 に答える 1

5

問題はFile、単なる道ではありません。シリアライズ可能ですが、VARCHARにマップされることはありません。パスだけが必要な場合は、file.getPath()をエンティティとFileオブジェクトの一部にする必要があります@Transient。そうすれば、DBへのパスを保存しても、Fileロード時にオブジェクトを保持できます。

このようなもの:

@Entity
public class MyEntity {
    @Id
    private Long id;

    @Transient
    private File file;

    private String filePath;

    private String someString;


public void setFilePath(File file) {
    filePath = file.getPath();
}

}

于 2013-03-13T12:15:49.703 に答える