【问题标题】:Exception when running server after generating entities using jpa tool in spring tool suite involving foreign keys and composite primary keys在涉及外键和复合主键的spring工具套件中使用jpa工具生成实体后运行服务器时出现异常
【发布时间】: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


    【解决方案1】:

    你的桌子是

    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.bioinformatics.entities.SequencesRest

    【讨论】:

    • 真的很抱歉。那不是问题。我在这里发布了错误的数据库表。我已经编辑了问题(创建语句)。请检查
    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 2013-12-24
    • 2018-02-02
    • 1970-01-01
    • 2013-08-26
    • 2011-12-17
    • 2018-12-27
    • 2017-11-30
    相关资源
    最近更新 更多