java - 如何解决java中Set<Path>的Hibernate映射异常?

标签 java spring hibernate hibernate-mapping

我想将目录保存到数据库作为我的文件路径树,但在初始化 Hibernate 时出现此错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [hibernate-config.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.nio.file.Path, at table: BasePlan_selectedPaths, for columns: [org.hibernate.mapping.Column(selected_paths)]

Here是我的文件路径树:

@Column(name = "selected_paths")
@ElementCollection(targetClass = Path.class)
private Set<Path> selectedPaths;

最佳答案

我创建了一个转换器类。之后我修改了我的字段。 Hibernate 创建一个表,它将像字符串一样保存路径。

public class PathConverter implements AttributeConverter<Path, String> {

    @Override
    public String convertToDatabaseColumn(Path path) {
        return path.toString();
    }

    @Override
    public Path convertToEntityAttribute(String path) {
        return Paths.get(path);
    }
}

@Column(name = "selected_paths")
@ElementCollection(targetClass = Path.class)
@Convert(converter = PathConverter.class)
private Set<Path> selectedPaths;

@Column(name = "unselected_paths")
@ElementCollection(targetClass = Path.class)
@Convert(converter = PathConverter.class)
private Set<Path> unSelectedPaths;

关于java - 如何解决java中Set<Path>的Hibernate映射异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49220739/

相关文章:

java - Java中如何根据字符串列表创建对象?

java - Runtime.exec 字符串给出语法错误

java - @Where 子句在 hibernate 连接查询中不起作用

spring - “一对多”/ 'many to many'属性值类型不应为 '? extends'

java - Eclipse 插件 - 文件未找到异常

spring - 使用 Spring Social 框架和 Jersey 的 Maven 项目

java - 如何使 Spring Joda-Time 格式化程序在非标准语言环境下工作?

java - JPA : not overriding equals() and hashCode() in the entities?

java - 使用 Hibernate 更新表时忽略实体 bean 的空值

java - 使用nio2测试特定后缀的文件是否存在