Java 在spring工具套件中使用jpa工具生成包含外键和复合主键的实体后运行服务器时出现异常

Java 在spring工具套件中使用jpa工具生成包含外键和复合主键的实体后运行服务器时出现异常,java,mysql,spring,jpa,spring-boot,Java,Mysql,Spring,Jpa,Spring Boot,我有以下问题 我在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_

我有以下问题

我在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工具生成了实体。 注意,在上面的表中,当序列名称和序列名称被链接时,我遇到了问题。我能够在DB中创建表。但在生成实体后和运行tomcat服务器时出现异常。下面是我的实体代码

DBS_休息

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

    }
序列SNAMESRESTPK

    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;
    }
}
休息时间

    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工具生成enities。在以下情况下,我不会出错

创建1)DBSREST、RegionRest、SequencesNameRest、SequencesNamePK 2) DBSREST,REGIONSREST,SEQUENCESREST 3) SEQUENCESNAMESREST,SEQUENCESNAMESPK 4) 序列列表

只有当我链接SequencesNameRest和SequencesNameRest时,我才会得到异常。请注意,在SequencesNameRest中,foreign是复合主键的一部分。当我缩小可能的范围时,这就是我发现错误的地方。请帮帮我,伙计们

PS:我必须限制异常内容。如果您需要更多,请告诉我您的桌子在哪里

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;
正如消息所暗示的那样

原因:org.hibernate.MappingException:属性映射错误 列数: edu.unomaha.ist.生物信息学.实体.序列测试


我真的很抱歉。这不是问题所在。我把数据库表贴错了。我已经编辑了问题(创建语句)。请查收
@Column(name="SEQ_ID")
private int seqId;
@Column(name="I3BIO")
private int i3bio;