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
Java Hibernate InheritanceType.JOINED阻止创建表_Java_Hibernate_Spring Boot_Jpa_Inheritance - Fatal编程技术网

Java Hibernate InheritanceType.JOINED阻止创建表

Java Hibernate InheritanceType.JOINED阻止创建表,java,hibernate,spring-boot,jpa,inheritance,Java,Hibernate,Spring Boot,Jpa,Inheritance,我有两个类,“OrderBase”和“OrderPay”,我正试图实现“InheritanceType.JOINED”类型的继承 虽然每个类的表和单个表都可以很好地工作,但一旦我将类型更改为“JOINED”就无法创建它,我也不知道为什么 我在切换继承类型时删除并重新创建了模式,以确保这不是问题所在 我试图实现该类型继承的任何其他类也会发生这种情况 我的表格创建策略是“创建”: spring.jpa.hibernate.ddl auto=create 将其更改为“update”时,即使该表存在于数

我有两个类,“OrderBase”和“OrderPay”,我正试图实现“InheritanceType.JOINED”类型的继承

虽然每个类的表和单个表都可以很好地工作,但一旦我将类型更改为“JOINED”就无法创建它,我也不知道为什么

我在切换继承类型时删除并重新创建了模式,以确保这不是问题所在

我试图实现该类型继承的任何其他类也会发生这种情况

我的表格创建策略是“创建”: spring.jpa.hibernate.ddl auto=create

将其更改为“update”时,即使该表存在于数据库中(抛出错误之前和之后),错误仍将持续存在

我还创建了一个新项目,以确保没有任何其他因素阻止它运行,并且仍然会发生相同的错误

我在github上分享了这个项目。localhost上使用mysql创建架构的规范位于application.properties文件中:

以下是课程:

  • OrderBase.java
  • package com.brownbag_api.model;
    导入java.io.Serializable;
    导入javax.persistence.Column;
    导入javax.persistence.Entity;
    导入javax.persistence.GeneratedValue;
    导入javax.persistence.GenerationType;
    导入javax.persistence.Id;
    导入javax.persistence.heritation;
    导入javax.persistence.InheritanceType;
    导入javax.persistence.Table;
    导入javax.validation.constraints.NotNull;
    @实体
    @表(name=“订单基数”)
    @继承(策略=InheritanceType.JOINED)
    公共类OrderBase实现了可序列化{
    私有静态最终长serialVersionUID=-3458221490393509305L;
    @身份证
    @GeneratedValue(策略=GenerationType.IDENTITY)
    @列(name=“ID”)
    私人长id;
    @NotNull
    @列(name=“AMOUNT”)
    私人双倍金额;
    公共秩序(){
    }
    公共长getId(){
    返回id;
    }
    公共无效集合id(长id){
    this.id=id;
    }
    公共双getAmount(){
    退货金额;
    }
    公共无效设置金额(双倍金额){
    这个。金额=金额;
    }
    }
    
  • OrderPay.java
  • package com.brownbag_api.model;
    导入javax.persistence.Column;
    导入javax.persistence.Entity;
    导入javax.validation.constraints.NotNull;
    @实体
    公共类OrderPay扩展了OrderBase{
    私有静态最终长serialVersionUID=464358903146964779L;
    @NotNull
    @列(name=“BOOK\u TEXT”)
    私有字符串文本;
    公共秩序支付(){
    }
    公共字符串getBookText(){
    返回bookText;
    }
    公共void setBookText(字符串bookText){
    this.bookText=bookText;
    }
    }
    
    堆栈跟踪如下(实际上归结为“未找到父类表”)

    原因:javax.persistence.PersistenceException:[PersistenceUnit:default]无法构建Hibernate SessionFactory;嵌套异常为org.hibernate.MappingException:无法实例化persister org.hibernate.persister.entity.JoinedSubassentityperMaster 原因:org.hibernate.MappingException:无法实例化persister org.hibernate.persister.entity.JoinedSubassentityperMaster 原因:org.hibernate.AssertionFailure:找不到表brownbag.order_base

    pom.xml:

    
    4.0.0
    org.springframework.boot
    spring启动程序父级
    2.2.6.1发布
    com.brownbag
    应用程序编程接口
    0.0.1-快照
    应用程序编程接口
    布朗巴格项目空气污染指数
    1.8
    org.springframework.boot
    spring引导启动器数据jpa
    org.springframework.boot
    弹簧启动安全
    org.springframework.boot
    SpringBootStarterWeb
    io.jsonwebtoken
    jjwt
    0.9.1
    mysql
    mysql连接器java
    运行时
    org.springframework.boot
    弹簧起动试验
    测试
    org.junit.vintage
    朱尼特老式发动机
    org.springframework.security
    弹簧安全性试验
    测试
    org.springframework.boot
    springbootmaven插件
    
    您有一个输入错误。您可能继承了javax.persistence.criteria.Order

    如果您将OrderPay更改为从正确的OrderBase类扩展,则一切都将按预期工作,并创建表:

    public class OrderPay extends OrderBase {
    
        //rest of code
    
    }
    
    此外,请删除此属性:

    spring.jpa.properties.hibernate.default_schema=brownbag
    

    您已经在spring.datasource.url中定义了要连接的数据库。

    您有一个输入错误。您可能继承了javax.persistence.criteria.Order

    如果您将OrderPay更改为从正确的OrderBase类扩展,则一切都将按预期工作,并创建表:

    public class OrderPay extends OrderBase {
    
        //rest of code
    
    }
    
    此外,请删除此属性:

    spring.jpa.properties.hibernate.default_schema=brownbag
    

    您已经在spring.datasource.url中定义了要连接的数据库。

    OrderPay是否从正确的类继承?它不应该是OrderBase吗?这是文章中的一个输入错误,在源代码中是正确的,因此错误仍然存在。OrderPay继承自正确的类吗?这不是OrderBase吗?这是帖子中的一个输入错误,在源代码中是正确的,因此错误仍然存在。很抱歉,输入错误只出现在答案中,实际的源代码是正确的,错误持续存在。您可以编辑您的问题,使其包含带有导入的真实代码吗?我添加了导入。然而,我尝试在这个项目的任何其他类中实现这种类型的继承,但它在任何地方都不起作用?你能粘贴或pom.xml和application.properties吗?如果我理解