【发布时间】:2017-06-10 01:29:09
【问题描述】:
我遇到以下问题
我在mysql数据库中创建了四个表。
CREATE TABLE `MIPO`.`DBS_REST` (
`DB_ID` INT NOT NULL AUTO_INCREMENT,
`DB_NAME` VARCHAR(100) NOT NULL,
`DB_DESC` VARCHAR(45) NULL,
`DB_THRSHLD_SPPLMNT` VARCHAR(45) NULL,
`DB_THRSHLD_RMV` VARCHAR(45) NULL,
`DB_MAX_USR_SEQNCS` VARCHAR(45) NULL,
`DB_VALIDATN_EXPRSNS` VARCHAR(45) NULL,
`DB_BG_SUPP_SRCHS` VARCHAR(45) NULL,
`DB_PRUNE_CNT` VARCHAR(45) NULL,
PRIMARY KEY (`DB_ID`));
CREATE TABLE `MIPO`.`REGIONS_REST` (
`REG_ID` INT NOT NULL AUTO_INCREMENT,
`REG_NAME` VARCHAR(45) NOT NULL,
`REG_START_SEQ` VARCHAR(45) NOT NULL,
`REG_END_SEQ` VARCHAR(45) NOT NULL,
`REG_ACTIVE` ENUM('Y', 'N') NULL DEFAULT 'Y',
`REG_WILDCARD` VARCHAR(45) NOT NULL,
`REG_WILDCARD_SRCHLMT` INT NOT NULL,
`REG_WILDCARD_INSRTLMT` INT NOT NULL,
`REG_RUNLMT` INT NOT NULL,
`REG_SYMBOL` VARCHAR(45) NULL,
PRIMARY KEY (`REG_ID`),
UNIQUE INDEX `REGION_NAME_UNIQUE` (`REG_NAME` ASC));
CREATE TABLE SEQUENCES_REST (
SEQ_ID INT(11) NOT NULL AUTO_INCREMENT,
DB_ID INT(11) NOT NULL,
SEQ_ACTIVE enum('Y','N'),
SEQ_DATA longtext NOT NULL,
I3BIO INT(11),
REG_ID INT(10),
PRIMARY KEY (SEQ_ID),
FOREIGN KEY (DB_ID) REFERENCES DBS_REST(DB_ID),
FOREIGN KEY (REG_ID) REFERENCES REGIONS_REST(REG_ID)
);
CREATE TABLE SEQUENCES_NAMES_REST(
SEQ_ID INT(11) NOT NULL,
SEQ_NAME VARCHAR(100) NOT NULL,
PRIMARY KEY(SEQ_ID,SEQ_NAME),
FOREIGN KEY (SEQ_ID) REFERENCES SEQUENCES_REST(SEQ_ID)
);
创建它们后,我从 spring 工具套件中的 jpa 工具生成了实体。 请注意,在上表中,当 SEQUENCES_NAMES 和 SEQUENCES_NAMES_REST 链接时,我遇到了问题。我能够在数据库中创建表。但是在生成实体后并在运行 tomcat 服务器时出现异常。以下是我的实体代码
DBS_REST
package edu.unomaha.ist.bioinformatics.entities;
import java.io.Serializable;
import javax.persistence.*;
import java.util.List;
/**
* The persistent class for the DBS_REST database table.
*
*/
@Entity
@Table(name="DBS_REST")
@NamedQuery(name="DbsRest.findAll", query="SELECT d FROM DbsRest d")
public class DbsRest implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="DB_ID")
private int dbId;
@Column(name="DB_BG_SUPP_SRCHS")
private String dbBgSuppSrchs;
@Column(name="DB_DESC")
private String dbDesc;
@Column(name="DB_MAX_USR_SEQNCS")
private String dbMaxUsrSeqncs;
@Column(name="DB_NAME")
private String dbName;
@Column(name="DB_PRUNE_CNT")
private String dbPruneCnt;
@Column(name="DB_THRSHLD_RMV")
private String dbThrshldRmv;
@Column(name="DB_THRSHLD_SPPLMNT")
private String dbThrshldSpplmnt;
@Column(name="DB_VALIDATN_EXPRSNS")
private String dbValidatnExprsns;
//bi-directional many-to-one association to SequencesRest
@OneToMany(mappedBy="dbsRest")
private List<SequencesRest> sequencesRests;
public DbsRest() {
}
public int getDbId() {
return this.dbId;
}
public void setDbId(int dbId) {
this.dbId = dbId;
}
public String getDbBgSuppSrchs() {
return this.dbBgSuppSrchs;
}
public void setDbBgSuppSrchs(String dbBgSuppSrchs) {
this.dbBgSuppSrchs = dbBgSuppSrchs;
}
public String getDbDesc() {
return this.dbDesc;
}
public void setDbDesc(String dbDesc) {
this.dbDesc = dbDesc;
}
public String getDbMaxUsrSeqncs() {
return this.dbMaxUsrSeqncs;
}
public void setDbMaxUsrSeqncs(String dbMaxUsrSeqncs) {
this.dbMaxUsrSeqncs = dbMaxUsrSeqncs;
}
public String getDbName() {
return this.dbName;
}
public void setDbName(String dbName) {
this.dbName = dbName;
}
public String getDbPruneCnt() {
return this.dbPruneCnt;
}
public void setDbPruneCnt(String dbPruneCnt) {
this.dbPruneCnt = dbPruneCnt;
}
public String getDbThrshldRmv() {
return this.dbThrshldRmv;
}
public void setDbThrshldRmv(String dbThrshldRmv) {
this.dbThrshldRmv = dbThrshldRmv;
}
public String getDbThrshldSpplmnt() {
return this.dbThrshldSpplmnt;
}
public void setDbThrshldSpplmnt(String dbThrshldSpplmnt) {
this.dbThrshldSpplmnt = dbThrshldSpplmnt;
}
public String getDbValidatnExprsns() {
return this.dbValidatnExprsns;
}
public void setDbValidatnExprsns(String dbValidatnExprsns) {
this.dbValidatnExprsns = dbValidatnExprsns;
}
public List<SequencesRest> getSequencesRests() {
return this.sequencesRests;
}
public void setSequencesRests(List<SequencesRest> sequencesRests) {
this.sequencesRests = sequencesRests;
}
public SequencesRest addSequencesRest(SequencesRest sequencesRest) {
getSequencesRests().add(sequencesRest);
sequencesRest.setDbsRest(this);
return sequencesRest;
}
public SequencesRest removeSequencesRest(SequencesRest sequencesRest) {
getSequencesRests().remove(sequencesRest);
sequencesRest.setDbsRest(null);
return sequencesRest;
}
}
REGIONS_REST
package edu.unomaha.ist.bioinformatics.entities;
import java.io.Serializable;
import javax.persistence.*;
import java.util.List;
/**
* The persistent class for the REGIONS_REST database table.
*
*/
@Entity
@Table(name="REGIONS_REST")
@NamedQuery(name="RegionsRest.findAll", query="SELECT r FROM RegionsRest r")
public class RegionsRest implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="REG_ID")
private int regId;
@Column(name="REG_ACTIVE")
private String regActive;
@Column(name="REG_END_SEQ")
private String regEndSeq;
@Column(name="REG_NAME")
private String regName;
@Column(name="REG_RUNLMT")
private int regRunlmt;
@Column(name="REG_START_SEQ")
private String regStartSeq;
@Column(name="REG_SYMBOL")
private String regSymbol;
@Column(name="REG_WILDCARD")
private String regWildcard;
@Column(name="REG_WILDCARD_INSRTLMT")
private int regWildcardInsrtlmt;
@Column(name="REG_WILDCARD_SRCHLMT")
private int regWildcardSrchlmt;
//bi-directional many-to-one association to SequencesRest
@OneToMany(mappedBy="regionsRest")
private List<SequencesRest> sequencesRests;
public RegionsRest() {
}
public int getRegId() {
return this.regId;
}
public void setRegId(int regId) {
this.regId = regId;
}
public String getRegActive() {
return this.regActive;
}
public void setRegActive(String regActive) {
this.regActive = regActive;
}
public String getRegEndSeq() {
return this.regEndSeq;
}
public void setRegEndSeq(String regEndSeq) {
this.regEndSeq = regEndSeq;
}
public String getRegName() {
return this.regName;
}
public void setRegName(String regName) {
this.regName = regName;
}
public int getRegRunlmt() {
return this.regRunlmt;
}
public void setRegRunlmt(int regRunlmt) {
this.regRunlmt = regRunlmt;
}
public String getRegStartSeq() {
return this.regStartSeq;
}
public void setRegStartSeq(String regStartSeq) {
this.regStartSeq = regStartSeq;
}
public String getRegSymbol() {
return this.regSymbol;
}
public void setRegSymbol(String regSymbol) {
this.regSymbol = regSymbol;
}
public String getRegWildcard() {
return this.regWildcard;
}
public void setRegWildcard(String regWildcard) {
this.regWildcard = regWildcard;
}
public int getRegWildcardInsrtlmt() {
return this.regWildcardInsrtlmt;
}
public void setRegWildcardInsrtlmt(int regWildcardInsrtlmt) {
this.regWildcardInsrtlmt = regWildcardInsrtlmt;
}
public int getRegWildcardSrchlmt() {
return this.regWildcardSrchlmt;
}
public void setRegWildcardSrchlmt(int regWildcardSrchlmt) {
this.regWildcardSrchlmt = regWildcardSrchlmt;
}
public List<SequencesRest> getSequencesRests() {
return this.sequencesRests;
}
public void setSequencesRests(List<SequencesRest> sequencesRests) {
this.sequencesRests = sequencesRests;
}
public SequencesRest addSequencesRest(SequencesRest sequencesRest) {
getSequencesRests().add(sequencesRest);
sequencesRest.setRegionsRest(this);
return sequencesRest;
}
public SequencesRest removeSequencesRest(SequencesRest sequencesRest) {
getSequencesRests().remove(sequencesRest);
sequencesRest.setRegionsRest(null);
return sequencesRest;
}
}
SEQUENCES_NAMES_REST
package edu.unomaha.ist.bioinformatics.entities;
import java.io.Serializable;
import javax.persistence.*;
/**
* The persistent class for the SEQUENCES_NAMES_REST database table.
*
*/
@Entity
@Table(name="SEQUENCES_NAMES_REST")
@NamedQuery(name="SequencesNamesRest.findAll", query="SELECT s FROM SequencesNamesRest s")
public class SequencesNamesRest implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private SequencesNamesRestPK id;
//uni-directional many-to-one association to SequencesRest
@ManyToOne
@JoinColumn(name="SEQ_ID")
private SequencesRest sequencesRest;
public SequencesNamesRest() {
}
public SequencesNamesRestPK getId() {
return this.id;
}
public void setId(SequencesNamesRestPK id) {
this.id = id;
}
public SequencesRest getSequencesRest() {
return this.sequencesRest;
}
public void setSequencesRest(SequencesRest sequencesRest) {
this.sequencesRest = sequencesRest;
}
}
SequencesNamesRestPK
package edu.unomaha.ist.bioinformatics.entities;
import java.io.Serializable;
import javax.persistence.*;
/**
* The primary key class for the SEQUENCES_NAMES_REST database table.
*
*/
@Embeddable
public class SequencesNamesRestPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@Column(name="SEQ_ID", insertable=false, updatable=false)
private int seqId;
@Column(name="SEQ_NAME")
private String seqName;
public SequencesNamesRestPK() {
}
public int getSeqId() {
return this.seqId;
}
public void setSeqId(int seqId) {
this.seqId = seqId;
}
public String getSeqName() {
return this.seqName;
}
public void setSeqName(String seqName) {
this.seqName = seqName;
}
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (!(other instanceof SequencesNamesRestPK)) {
return false;
}
SequencesNamesRestPK castOther = (SequencesNamesRestPK)other;
return
(this.seqId == castOther.seqId)
&& this.seqName.equals(castOther.seqName);
}
public int hashCode() {
final int prime = 31;
int hash = 17;
hash = hash * prime + this.seqId;
hash = hash * prime + this.seqName.hashCode();
return hash;
}
}
SEQUENCES_REST
package edu.unomaha.ist.bioinformatics.entities;
import java.io.Serializable;
import javax.persistence.*;
/**
* The persistent class for the SEQUENCES_REST database table.
*
*/
@Entity
@Table(name="SEQUENCES_REST")
@NamedQuery(name="SequencesRest.findAll", query="SELECT s FROM SequencesRest s")
public class SequencesRest implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="SEQ_ID")
private int seqId;
@Column(name="I3BIO")
private int i3bio;
@Column(name="SEQ_ACTIVE")
private String seqActive;
@Column(name="SEQ_DATA")
private Object seqData;
//bi-directional many-to-one association to DbsRest
@ManyToOne
@JoinColumn(name="DB_ID")
private DbsRest dbsRest;
//bi-directional many-to-one association to RegionsRest
@ManyToOne
@JoinColumn(name="REG_ID")
private RegionsRest regionsRest;
public SequencesRest() {
}
public int getSeqId() {
return this.seqId;
}
public void setSeqId(int seqId) {
this.seqId = seqId;
}
public int getI3bio() {
return this.i3bio;
}
public void setI3bio(int i3bio) {
this.i3bio = i3bio;
}
public String getSeqActive() {
return this.seqActive;
}
public void setSeqActive(String seqActive) {
this.seqActive = seqActive;
}
public Object getSeqData() {
return this.seqData;
}
public void setSeqData(Object seqData) {
this.seqData = seqData;
}
public DbsRest getDbsRest() {
return this.dbsRest;
}
public void setDbsRest(DbsRest dbsRest) {
this.dbsRest = dbsRest;
}
public RegionsRest getRegionsRest() {
return this.regionsRest;
}
public void setRegionsRest(RegionsRest regionsRest) {
this.regionsRest = regionsRest;
}
}
以下是我启动服务器时遇到的异常。
2017-01-24 18:43:48.115 INFO 4558 --- [ost-startStop-1] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
2017-01-24 18:43:48.129 INFO 4558 --- [ost-startStop-1] org.hibernate.Version : HHH000412: Hibernate Core {4.1.9.Final}
2017-01-24 18:43:48.132 INFO 4558 --- [ost-startStop-1] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2017-01-24 18:43:48.135 INFO 4558 --- [ost-startStop-1] org.hibernate.cfg.Environment : HHH000021: Bytecode provider name : javassist
2017-01-24 18:43:48.178 INFO 4558 --- [ost-startStop-1] org.hibernate.ejb.Ejb3Configuration : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2017-01-24 18:43:48.730 WARN 4558 --- [ost-startStop-1] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: 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 EntityManagerFactory
2017-01-24 18:43:48.740 INFO 4558 --- [ost-startStop-1] utoConfigurationReportLoggingInitializer :
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-01-24 18:43:48.750 ERROR 4558 --- [ost-startStop-1] 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 EntityManagerFactory
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:851) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303) [catalina.jar:8.0.37]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) [catalina.jar:8.0.37]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407) [catalina.jar:8.0.37]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397) [catalina.jar:8.0.37]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_111]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_111]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_111]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915) ~[hibernate-entitymanager-4.1.9.Final.jar:4.1.9.Final]
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) ~[hibernate-entitymanager-4.1.9.Final.jar:4.1.9.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateEjbPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateEjbPersistenceProvider.java:51) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at
我在 spring 工具套件中执行此操作,并使用 jpa 工具生成实体。在以下情况下我没有收到错误
创建 1)DBSREST,REGIONSREST,SEQUENCESNAMESREST,SEQUENCESNAMESPK 2)DBSREST,区域REST,序列REST 3)SEQUENCESNAMESREST,SEQUENCESNAMESPK 4)序列休息
只有当我链接 SEQUENCESNAMESREST 和 SEQUENCESNAMESREST 时,我才会收到异常。请注意,在 SEQUENCESNAMESREST 中,foreign 是复合主键的一部分。当我缩小可能的情况时,这就是我发现错误的地方。请帮帮我。
PS:我不得不限制异常内容。如果您需要更多,请告诉我
【问题讨论】:
标签: java mysql spring jpa spring-boot