Java Hibernate InheritanceType.JOINED阻止创建表
我有两个类,“OrderBase”和“OrderPay”,我正试图实现“InheritanceType.JOINED”类型的继承 虽然每个类的表和单个表都可以很好地工作,但一旦我将类型更改为“JOINED”就无法创建它,我也不知道为什么 我在切换继承类型时删除并重新创建了模式,以确保这不是问题所在 我试图实现该类型继承的任何其他类也会发生这种情况 我的表格创建策略是“创建”: spring.jpa.hibernate.ddl auto=create 将其更改为“update”时,即使该表存在于数据库中(抛出错误之前和之后),错误仍将持续存在 我还创建了一个新项目,以确保没有任何其他因素阻止它运行,并且仍然会发生相同的错误 我在github上分享了这个项目。localhost上使用mysql创建架构的规范位于application.properties文件中: 以下是课程: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”时,即使该表存在于数
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(){
退货金额;
}
公共无效设置金额(双倍金额){
这个。金额=金额;
}
}
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吗?如果我理解