[英]Hibernate/JPA Inheritance class change
嗨,我有一个 Spring 项目,我正在使用 sql 将所有内容从我的手工持久层迁移到 Hibernate/JPA ORM。
我面临以下情况:我有一个AbstractUser class、一个SimpleUser和一个ProviderUser 。 Simple 和 Provider 扩展了 AbstractUser 的形式。 Provider 与 SimpleUser 的区别在于,第一个具有额外的字段和实体,而第二个没有。 我使用@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
到 map 我的 inheritance 并且一切运行顺利。
问题是我不知道如何管理将 SimpleUser 升级为 Provider 的操作。 我想到了两件事:
我真的认为这两种方法都不正确,但它们确实有效。 这样做的最佳方法是什么?
更改现有 object 的类型在 Java 中不是一个有意义的概念:Object 只是一些东西。 然而,JPA 本质上是关系(通常)数据库上的一个非常复杂的魔术视图,并且完全有可能有多个类引用同一个表; 我之前使用只读的@Entity FooSummaryView
完成了此操作,它仅从一些大型遗留怪物中检索几列。
一般来说,我的建议是让您的ProviderCharacteristics
使用 User FK 作为 PK,将您的 ProviderCharacteristics 放在带有@MapsId
的单独表中,但是如果您不想迁移实际的数据库模式,那么您需要手动操作您的行进行更改。 您的第二个选项是简单地修改 JDBC 中的鉴别器(以及满足验证约束所需的任何更新)似乎是侵入性最小的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.