2023-01-05 02:05:53.604 ERROR 13808 --- [ main] o.s.boot.SpringApplication : Application startup failed
package com.stepforward.mirrorworld.p3_application_bean.Specification;
import java.util.ArrayList;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;
import org.hibernate.annotations.GenericGenerator;
import com.stepforward.mirrorworld.p2_base_bean.Thing_Class_Register;
import com.stepforward.mirrorworld.p2_base_bean.Thing_User_Interface;
import com.stepforward.mirrorworld.p3_application_bean.Jurisdiction.Jurisdiction;
import com.stepforward.mirrorworld.p3_application_bean.Thing.Thing;
@Entity
public class Specification_Definer extends Thing
{
@Id
@GenericGenerator(name="assigned", strategy="assigned")
@GeneratedValue(generator="assigned")
@Column(nullable=false,length=100)
private String Id;
@Column(nullable=false,length=150)
private String Name;
@Column(nullable=false,length=50)
private String Entity_Type;
@Column(nullable=false,length=100)
private String Specification_Class_Id=null;//no
@ManyToOne(targetEntity=Unit.class)
@JoinColumn(name="specification_unit",nullable=true)
private Unit Specification_Unit;
@Column(nullable=false,length=100)
private String Specification_Definer_Type;
@Column(nullable=true,length=10000)
private String Specification_Definer_Persistence_String;
@Column(nullable=true,length=150)
private String Code;
@ManyToOne(targetEntity=Jurisdiction.class)
@JoinColumn(name="jurisdiction",nullable=true)
private Jurisdiction Jurisdiction;
@Transient
private ArrayList<Thing_User_Interface> Thing_UI_List=new ArrayList<Thing_User_Interface>();
@Transient
private String Thing_Class_Id="Specification_Definer";
@Transient
private Thing_Class_Register Thing_Class_Register=new Thing_Class_Register();
public Specification_Definer()
{
// TODO Auto-generated constructor stub
}
public String getId()
{
return this.Id;
}
public void setId(String Id)
{
this.Id=Id;
}
public String getName()
{
return this.Name;
}
public void setName(String Name)
{
this.Name = Name;
}
public String getEntity_Type()
{
return this.Entity_Type;
}
public void setEntity_Type(String Entity_Type)
{
this.Entity_Type = Entity_Type;
}
public String getSpecification_Class_Id()
{
return this.Specification_Class_Id;
}
public void setSpecification_Class_Id(String Specification_Class_Id)
{
this.Specification_Class_Id = Specification_Class_Id;
}
public Unit getSpecification_Unit()
{
return this.Specification_Unit;
}
public void setSpecification_Unit(Unit Specification_Unit)
{
this.Specification_Unit=Specification_Unit;
}
public String getSpecification_Definer_Type()
{
return this.Specification_Definer_Type;
}
public void setSpecification_Definer_Type(String Specification_Definer_Type)
{
this.Specification_Definer_Type = Specification_Definer_Type;
}
public String getSpecification_Definer_Persistence_String()
{
return this.Specification_Definer_Persistence_String;
}
public void setSpecification_Definer_Persistence_String(String Specification_Definer_Persistence_String)
{
this.Specification_Definer_Persistence_String = Specification_Definer_Persistence_String;
}
public String getCode()
{
return this.Code;
}
public void setCode(String Code)
{
this.Code = Code;
}
public Jurisdiction getJurisdiction()
{
return this.Jurisdiction;
}
public void setJurisdiction(Jurisdiction Jurisdiction)
{
this.Jurisdiction=Jurisdiction;
}
public ArrayList<Thing_User_Interface> getThing_UI_List()
{
return this.Thing_UI_List;
}
public void setThing_UI_List(ArrayList<Thing_User_Interface> Thing_UI_List)
{
this.Thing_UI_List = Thing_UI_List;
}
public String getThing_Class_Id()
{
return this.Thing_Class_Id;
}
public Thing_Class_Register getThing_Class_Register()
{
return this.Thing_Class_Register;
}
public void setThing_Class_Register(Thing_Class_Register Thing_Class_Register)
{
this.Thing_Class_Register = Thing_Class_Register;
}
}
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2023-01-05 02:05:53.604 ERROR 13808 --- [ main] o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table specification_definer add constraint FKfipunbljpmttkyl891sxkstut foreign key (specification_unit) references unit (id)]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1082) ~[spring-context-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857) ~[spring-context-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
at com.stepforward.mirrorworld.mirrorworldApplication.main(mirrorworldApplication.java:48) ~[classes/:na]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table specification_definer add constraint FKfipunbljpmttkyl891sxkstut foreign key (specification_unit) references unit (id)]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:371) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:336) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1688) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
... 15 common frames omitted
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table specification_definer add constraint FKfipunbljpmttkyl891sxkstut foreign key (specification_unit) references unit (id)]
at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:59) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlString(SchemaMigratorImpl.java:431) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlStrings(SchemaMigratorImpl.java:420) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applyForeignKeys(SchemaMigratorImpl.java:386) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:214) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:134) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:472) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:360) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:384) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
... 19 common frames omitted
Caused by: java.sql.SQLException: Can't create table 'mirrorworld.#sql-13d0_19b' (errno: 150)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2491) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1552) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2607) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1480) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) ~[tomcat-jdbc-8.5.40.jar:na]
at com.sun.proxy.$Proxy72.executeUpdate(Unknown Source) ~[na:na]
at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:56) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
... 32 common frames omitted
把以下去掉就能啓動:
@ManyToOne(targetEntity=Unit.class)
@JoinColumn(name="specification_unit",nullable=true)
private Unit Specification_Unit;
@ManyToOne(targetEntity=Jurisdiction.class)
@JoinColumn(name="jurisdiction",nullable=true)
private Jurisdiction Jurisdiction;
補充一下:一直都沒問題,直到我把上述類以及數據表名稱由“Attribute_Specification”改成“Specification_Definer”。
我等会帮你debug一下代码。
看错误好像是与数据库相关的错误,创建表出错类似的问题,建议先检查配置文件中的配置是否正确,尤其是与数据库相关的那块。其次,如果你的数据表已经存在了的话, 请检查你的Entity中各个字段与已建立的数据表中的字段的是否一致,尤其是涉及到外键的地方。望采纳!!
好像是你添加了那个注解之后,hibernate会在启动的时候尝试为表添加外键,如果不需要外键可以添加下面这个注解
@JoinColumn(foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
ConstraintMode.NO_CONSTRAINT = 约束模式:没有约束
提供参考实例【SpringBoot项目报错:"Error starting ApplicationContext...."解决办法】,链接:https://www.jb51.net/article/259544.htm
前面的都走开。
日志提示很明显,就是跟数据库相关操作的有问题
java debug输出的日志要看最后一段
日志的第4行的最后一句:
『alter table specification_definer add constraint FKfipunbljpmttkyl891sxkstut foreign key (specification_unit) references unit (id)』
修改表时,增加"Specification_Definer的specification_unit"字段约束外键引用"unit的id"存在问题
可以从这个地方入手,查看一下两个实体对应的外键的注解问题、数据库的表的外键相关字段名称或类型
这是一个 Java 类的定义。这个类可能是一个 Spring Boot 应用的启动类,也可能是应用的一个配置类。在这个类中,有一些 JPA 注解,表明这个类是一个 JPA 实体。
从这个错误信息来看,有可能是应用在启动过程中出现了问题。您可以按照提示,在启动应用时加上 debug 选项,然后查看自动配置报告,以便了解应用在启动过程中发生了什么。
还有,请注意这个类可能需要依赖注入,所以应当在应用的配置类中使用 @ComponentScan 注解来扫描这个包或者这个类所在的包。
希望这些信息对您有帮助。望采纳。
我用以下土法解決了問題:
1從零開始重新建一個與上述類(舊類)相同的新類,斷掉所有與該類的關聯,再把舊類刪掉。2把舊表的數據導出,斷掉所有與該表的關聯。3啓動 (成功)4把數據導回系統自動產生的新表。5重新恢復所有關聯。
謝謝大家的關注。