Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 为什么在将记录插入子表时,父表不使用新记录更新(使用每类表策略)_Hibernate_Inheritance - Fatal编程技术网

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。当尝试在“表/类”策略中的“已注册用户表”中插入记录时,是否有任何方法可以插入用户表?使用该策略的唯一方法是创建一个“已注册用户”和“普通用户”,并插入两个具有相同数据的实体。我不确定这是否有用,但我不知道您的域模型或原因:)