hibernate - 使用 Hibernate 在 Wildfly 上使用 JPA 创建表失败

标签 hibernate jpa persistence.xml

我使用 JPA 在使用 hibernate 安装的 Wildfly 8.0 的内置 H2 数据库上创建一个表,但失败并显示以下错误消息:

Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1187) at org.jboss.as.jpa.container.AbstractEntityManager.persist(AbstractEntityManager.java:581) at test.mdb.MessageDRivenBean.onMessage(MessageDRivenBean.java:41) at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) [:1.7.0_67] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_67] at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67] at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:251) ... 49 more Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:196) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:122) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:89) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:55) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3558) at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:98) at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:490) at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:195) at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:179) at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:214) at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:324) at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288) at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:194) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125) at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:84) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:206) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:149) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:811) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:784) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:789) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1181) ... 74 more Caused by: org.h2.jdbc.JdbcSQLException: Tabelle "JPA_USER" nicht gefunden Table "JPA_USER" not found; SQL statement: insert into JPA_User (employeeId, first_name, last_name, salary) values (null, ?, ?, ?) [42102-173] at org.h2.message.DbException.getJdbcSQLException(DbException.java:331) at org.h2.message.DbException.get(DbException.java:171) at org.h2.message.DbException.get(DbException.java:148) at org.h2.command.Parser.readTableOrView(Parser.java:4864) at org.h2.command.Parser.readTableOrView(Parser.java:4842) at org.h2.command.Parser.parseInsert(Parser.java:974) at org.h2.command.Parser.parsePrepared(Parser.java:375) at org.h2.command.Parser.parse(Parser.java:279) at org.h2.command.Parser.parse(Parser.java:251) at org.h2.command.Parser.prepareCommand(Parser.java:218) at org.h2.engine.Session.prepareLocal(Session.java:428) at org.h2.engine.Session.prepareCommand(Session.java:377) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1138) at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:70) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:267) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:1076) at org.jboss.jca.adapters.jdbc.WrappedConnection.prepareStatement(WrappedConnection.java:500) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$2.doPrepare(StatementPreparerImpl.java:124) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186) ... 96 more

19:15:33,694 WARN [org.hornetq.core.server] (Thread-18 (HornetQ-server-HornetQServerImpl::serverUUID=61b6684a-d6bb-11e4-926e-d9ecaa9f5457-1830325086)) HQ222149: Message Reference[55834575461]:RELIABLE:ServerMessage[messageID=55834575461,durable=true,userID=885a963a-dc80-11e4-be97-a7b41dae907c,priority=4, bodySize=256,expiration=0, durable=true, address=jms.queue.demoQueue,properties=TypedProperties[__HQ_CID=8842c877-dc80-11e4-be97-a7b41dae907c]]@400257444 has reached maximum delivery attempts, sending it to Dead Letter Address jms.queue.DLQ from jms.queue.demoQueue

该问题似乎与未找到表“JPA_USER”行相关; SQL语句:

insert into JPA_User (employeeId, first_name, last_name, salary)
values (null, ?, ?, ?) [42102-173]

但我希望 jPA 为我创建表 我的 persistence.xml 如下所示:

<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="ExampleDS">
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
      <property name="hibernate.hbm2dll.auto" value="create"/>
      <property name="hibernate.connection.username" value="sa"/>
      <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
      <property name="hibernate.connection.password" value="sa"/>
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="true"/>
    </properties>
</persistence-unit>
</persistence>

我使用默认数据源,该数据源与 h2 数据库关联。

有谁知道这里的问题是什么?

最佳答案

您的属性名称不正确。它是 ddl 而不是 dll

<property name="hibernate.hbm2ddl.auto" value="create"/>

关于hibernate - 使用 Hibernate 在 Wildfly 上使用 JPA 创建表失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29476158/

相关文章:

java - 在 Postman 中使用 REST Controller 测试 Spring 应用程序

java - 如何将 JQPL 查询转换为 DTO?

java - 找不到实体

java - 双向一对多 JPA org.hibernate.exception.ConstraintViolationException

hibernate - QueryDsl orderBy 列名

java - 如何为JPA和Hibernate创建一个persistence.xml文件?

java - JUnit 和 Spring : Cannot find persistence. xml - 但它确实存在

Hibernate 不等于示例标准

hibernate - Spring Boot 覆盖第三方依赖版本

java - 在gradle中定义变量填充persistence.xml中的数据