java - 我可以使用 JPA 将对象类型映射到表吗?

标签 java hibernate jpa jaxb eclipselink

我使用 xjc 创建一个代表目录的模型类。它被注释为与 jax-b 和 jpa 一起使用。因为它对目录进行建模,所以目录可以包含文档(文件)和其他目录,因此类属性之一是:

@XmlElements({
    @XmlElement(name = "dir", type = Dir.class),
    @XmlElement(name = "document", type = Document.class)
})
protected List<Object> dirOrDocument = new ArrayList<>();

您可以看到我有一个对象列表,它可以是 Dir 或 Document 类的实例。这对于使用 jax-b 编码到 xml 非常有用,但是如果我想使用 JPA 将其持久保存到数据库中,我将如何告诉 JPA 测试对象是否为 instanceof Dir,写入 Dir 表。如果Object是instanceof Document,写入文档表?

我已经考虑过使用 JPA AttributeConverter,但看起来前景并不乐观,因为它似乎可以从一种类型转换为另一种类型,但我可能需要转换为多种类型。

也许还有另一种方式来表示我的模型,可以更好地用于 JAXB 和 JPA?

我正在使用 eclipselink 来实现 JAXB 和 JPA。

最佳答案

要么将其设为两个独立的关联(subDirectoriesdocuments),要么创建一个包含公共(public)属性的抽象实体(例如 File)字段(nameparentDirectory 等),以及两个子类 DirectoryDocument。然后阅读 Hibernate 手册中有关继承的章节,了解映射继承的各种方式。

关于java - 我可以使用 JPA 将对象类型映射到表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44210781/

相关文章:

java - 在Java中将多个变量初始化为相同的值

java - Spring Boot/JPA/mySQL - 多对一关系创建了太多 SQL 查询

java - 增强 Hibernate 数据库架构?

java - 创建EntityManagerFactory时出错: java. lang.NoClassDefFoundError

java - JPA 与 Jboss 异常

java - 程序执行方法中每个 if 语句内的操作。不应该

java - 如何检测音频流中特定单词的出现。

java - 如何在 Java Mission Control 中启用对象类型 + 分配堆栈跟踪 + GC 根路径

java - 来自同一实体的多个外键? (JPA hibernate )

java - 反射 - getInterfaces() 显示奇怪的接口(interface)