gpt4 book ai didi

java - 使用spring工具套件中的jpa工具生成涉及外键和复合主键的实体后​​运行服务器时出现异常

转载 作者:行者123 更新时间:2023-11-29 19:30:09 25 4
gpt4 key购买 nike

我遇到以下问题

我在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;
}

}

序列名称RestPK

    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、RegionSREST、SEQUENCESREST 3)SEQUENCESNAMESREST,SEQUENCESNAMESPK 4)SEQUENCEREST

仅当我链接 SEQUENCESNAMESREST 和 SEQUENCESNAMESREST 时,我才会收到异常。请注意,在SEQUENCESNAMESREST中,foreign是复合主键的一部分。当我缩小可能的情况时,这就是我发现错误的地方。请帮助我。

PS:我必须限制异常内容。如果您需要更多,请告诉我

最佳答案

您的 table 是

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,

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)
);

但是您的对象列是

@Column(name="SEQ_ID")
private int seqId;

//这个不存在

@Column(name="I3BIO")
private int i3bio;

正如消息所暗示的

Caused by: org.hibernate.MappingException: property mapping has wrong number of columns: edu.unomaha.ist.bioinformatics.entities.SequencesRest

关于java - 使用spring工具套件中的jpa工具生成涉及外键和复合主键的实体后​​运行服务器时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41841910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com