Hibernate 为什么在将记录插入子表时,父表不使用新记录更新(使用每类表策略)
我有一个父实体(用户)和两个子实体(注册用户和未注册用户),并使用每类表策略在数据库表中实现这一点 所以我在数据库中有三个表。因此,当用户注册时,我将创建已注册的用户实体并将其持久化。它在已注册的用户表中创建一条记录,但不在用户表(父表)中插入任何记录 谁能帮忙解决这个问题 提前谢谢 问候,,Hibernate 为什么在将记录插入子表时,父表不使用新记录更新(使用每类表策略),hibernate,inheritance,Hibernate,Inheritance,我有一个父实体(用户)和两个子实体(注册用户和未注册用户),并使用每类表策略在数据库表中实现这一点 所以我在数据库中有三个表。因此,当用户注册时,我将创建已注册的用户实体并将其持久化。它在已注册的用户表中创建一条记录,但不在用户表(父表)中插入任何记录 谁能帮忙解决这个问题 提前谢谢 问候,, Nirathan您可能需要重新阅读InheritanceType上的Javadoc 已加入 一种策略,其中特定于子类的字段被映射到一个单独的表,而不是父类所共有的字段,并执行联接以实例化子类 单表 每个类
Nirathan您可能需要重新阅读
InheritanceType
上的Javadoc
已加入
一种策略,其中特定于子类的字段被映射到一个单独的表,而不是父类所共有的字段,并执行联接以实例化子类
单表
每个类层次结构只有一个表
每类表格
每个具体实体类的表
更加一致。在这种情况下,超级类的属性将存储在其自己的表中,而子类的属性将单独存储在其自己的表中。为了访问一个完整的行,JPA提供程序必须在所有参与的表之间执行联接,以获得完整的行
在TABLE\u PER_CLASS
场景中,每个具体的实体类型都有一个表,在您的例子中,一个表用于User
、RegisteredUser
和UnregisteredUser
,因为这三个都是@entity
映射。JPA提供者将它们视为单独的实体,但允许您在需要时对实体映射使用多态性
在数据库级别,如果查看表,您会注意到从User
继承的列也存在于其他两种类型中。创建子类类型时,RegisteredUser
,其userName
属性将存储在RegisteredUser
表中,而不是User
表中
只有直接创建用户
,数据才会存储在用户
感谢Naros。当尝试在“表/类”策略中的“已注册用户表”中插入记录时,是否有任何方法可以插入用户表?使用该策略的唯一方法是创建一个“已注册用户”和“普通用户”,并插入两个具有相同数据的实体。我不确定这是否有用,但我不知道您的域模型或原因:)