[英]Hibernate keeps dropping/creating tables when EntityManagerFactory is created
I am using JPA for Hibernate. 我正在将JPA用于Hibernate。 In one of my service method where records will be inserted. 在我的服务方法之一中,将插入记录。 I have the following line to initiate EntityManger: 我有以下代码行来启动EntityManger:
EntityManagerFactory factory = Persistence.createEntityManagerFactory("CghubDB");
EntityManager manager = factory.createEntityManager();
CghubDao dao = new CghubDao(manager);
When I was debugging the code, I notice Hibernate doing weird things while executing Persistence.createEntityManagerFactory. 当我调试代码时,我注意到Hibernate在执行Persistence.createEntityManagerFactory时做了奇怪的事情。 The output is as belows: 输出如下:
**Mar 08, 2016 11:42:45 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
name: CghubDB
...]
Mar 08, 2016 11:42:45 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.1.0.Final}
Mar 08, 2016 11:42:45 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Mar 08, 2016 11:42:45 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Mar 08, 2016 11:42:45 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Mar 08, 2016 11:42:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Mar 08, 2016 11:42:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://mdarisrac02d:3306/pancancer]
Mar 08, 2016 11:42:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=dian, password=****}
Mar 08, 2016 11:42:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Mar 08, 2016 11:42:45 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Mar 08, 2016 11:42:46 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Mar 08, 2016 11:42:46 AM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl useContextualLobCreation
INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
Hibernate: alter table PAIR_TB drop foreign key FK8s20mxutpctn5n8hm9bvg8iyd
Hibernate: alter table SEQ_TB drop foreign key FKkr6f9ff4d9h4pds6cby5ucky0
Hibernate: drop table if exists GROUP_TB
Hibernate: drop table if exists PAIR_TB
Hibernate: drop table if exists SEQ_TB
Hibernate: create table GROUP_TB (ROW_ID integer not null, GROUP_NAME varchar(255), primary key (ROW_ID))
Hibernate: create table PAIR_TB (ROW_ID integer not null, PAIR_CODE varchar(255), GROUP_ID integer, primary key (ROW_ID))
Hibernate: create table SEQ_TB (ROW_ID integer not null, ALIQUOT_ID varchar(255), ANALYSIS_ID varchar(255), ANALYTE_CODE varchar(255), center varchar(255), checksum varchar(255), DATA_URL varchar(255), DCC_PROJECT varchar(255), DCC_SPECIMEN_TYPE varchar(255), DISEASE_ABBR varchar(255), DISEASE_FULL varchar(255), filename varchar(255), filepath varchar(255), filesize integer not null, LAST_MODIFIED datetime, LEGACY_ID varchar(255), PARTICIPANT_ID varchar(255), platform varchar(255), PUBLISHED_DATE datetime, refassem varchar(255), SAMPLE_ID varchar(255), SAMPLE_TYPE varchar(255), SEQ_FORMAT varchar(255), SEQ_SOURCE varchar(255), SPECIMEN_ID varchar(255), study varchar(255), TISSUE_TYPE varchar(255), TSS_ID varchar(255), PAIR_ID integer, primary key (ROW_ID))
Hibernate: alter table PAIR_TB add constraint FK8s20mxutpctn5n8hm9bvg8iyd foreign key (GROUP_ID) references GROUP_TB (ROW_ID)
Hibernate: alter table SEQ_TB add constraint FKkr6f9ff4d9h4pds6cby5ucky0 foreign key (PAIR_ID) references PAIR_TB (ROW_ID)
Mar 08, 2016 11:42:47 AM org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources
INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@420f11e'
Mar 08, 2016 11:42:47 AM org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService
INFO: HHH000397: Using ASTQueryTranslatorFactory**
I don't understand why it is trying to drop all the tables and create them again. 我不明白为什么它要删除所有表并再次创建它们。 Same thing with the foreign keys. 外键也一样。 The entity classes were generated automatically in Eclipse. 实体类是在Eclipse中自动生成的。
persistence.xml persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="CghubDB" >
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.mdacc.rists.cghub.model.GroupTb</class>
<class>org.mdacc.rists.cghub.model.PairTb</class>
<class>org.mdacc.rists.cghub.model.SeqTb</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://risurl:3306/pancancer" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="pass" />
<!--Hibernate properties-->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>
</persistence>
You must set the hibernate property "hibernate.hbm2ddl.auto" to another value. 您必须将休眠属性“ hibernate.hbm2ddl.auto”设置为另一个值。 Either validate, update, create or create-drop. 验证,更新,创建或创建放置。
A more detailed explanation can be found at Hibernate hbm2ddl.auto possible values and what they do? 可以在Hibernate hbm2ddl.auto上找到更详细的解释。 可能的值及其作用是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.