假设以下实体:
@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
定义为字符串,让客户端创建File
或Path
对象。但是直接在实体中提供这些对象会更方便。
答案 0 :(得分:4)
问题是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();
}
}