问题遇到的现象和发生背景 :無法啓動項目
遇到的现象和发生背景,请写出第一个错误信息: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
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
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
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
把以下去掉就能啓動:
@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”。