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。如果只需要路径,则需要添加 make file.getPath() 实体和File对象的一部分@Transient。这样,您可以保存到数据库的路径,并且在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 回答