使用Hibernate在wildfly上使用JPA创建表失败

时间:2015-04-06 17:23:57

标签: hibernate jpa persistence.xml

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

  

引起:javax.persistence.PersistenceException:   org.hibernate.exception.SQLGrammarException:无法准备   声明在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)     在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)     在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)     在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1187)     在   org.jboss.as.jpa.container.AbstractEntityManager.persist(AbstractEntityManager.java:581)     at test.mdb.MessageDRivenBean.onMessage(MessageDRivenBean.java:41)     at sun.reflect.GeneratedMethodAccessor2.invoke(未知来源)   [: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)     在   org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)     在   org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)     在   org.jboss.as.ee.component.interceptors.UserInterceptorFactory $ 1.processInvocation(UserInterceptorFactory.java:63)     在   org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)     在   org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)     在   org.jboss.as.ee.component.interceptors.UserInterceptorFactory $ 1.processInvocation(UserInterceptorFactory.java:63)     在   org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)     在   org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)     在   org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)     在   org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)     在   org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)     在   org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)     在   org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)     在   org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)     在   org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)     在   org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)     在   org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)     在   org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)     在   org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:251)     ... 49更多引起:org.hibernate.exception.SQLGrammarException:   无法准备声明   org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123)     在   org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)     在   org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)     在   org.hibernate.engine.jdbc.internal.StatementPreparerImpl $ StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:196)     在   org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:122)     在   org.hibernate.id.IdentityGenerator $ GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:89)     在   org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:55)     在   org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032)     在   org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3558)     在   org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:98)     在org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:490)     在   org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:195)     在   org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:179)     在   org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:214)     在   org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:324)     在   org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288)     在   org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:194)     在   org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)     在   org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:84)     在   org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:206)     在   org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:149)     在   org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75)     在   org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:811)     在org.hibernate.internal.SessionImpl.persist(SessionImpl.java:784)     在org.hibernate.internal.SessionImpl.persist(SessionImpl.java:789)     在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1181)     ... 74更多引起:org.h2.jdbc.JdbcSQLException:Tabelle   " JPA_USER" nicht gefunden表" JPA_USER"未找到; SQL语句:   插入JPA_User(employeeId,first_name,last_name,salary)   值(null,?,?,?)[42102-173] at   org.h2.message.DbException.getJdbcSQLException(DbException.java:331)     在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 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)     在   org.h2.jdbc.JdbcPreparedStatement。(JdbcPreparedStatement.java:70)     在   org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:267)     在   org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:1076)     在   org.jboss.jca.adapters.jdbc.WrappedConnection.prepareStatement(WrappedConnection.java:500)     在   org.hibernate.engine.jdbc.internal.StatementPreparerImpl $ 2.doPrepare(StatementPreparerImpl.java:124)     在   org.hibernate.engine.jdbc.internal.StatementPreparerImpl $ StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186)     ......还有96个

     

19:15:33,694 WARN [org.hornetq.core.server](Thread-18   (HornetQ的服务器-HornetQServerImpl :: serverUUID = 61b6684a-d6bb-11e4-926e-d9ecaa9f5457-1830325086))   HQ222149:消息   参考文献[55834575461]:可靠:SERVERMESSAGE [MESSAGEID = 55834575461,耐用=真,用户ID = 885a963a-dc80-11e4-be97-a7b41dae907c,优先权= 4,   bodySize = 256,expiration = 0,durable = true,   地址= jms.queue.demoQueue,属性= TypedProperties [__ HQ_CID = 8842c877-dc80-11e4-be97-a7b41dae907c]] @ 400257444   已达到最大传递次数,将其发送到死信   从jms.queue.demoQueue

处理jms.queue.DLQ

问题似乎与表格" 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数据库关联。

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

1 个答案:

答案 0 :(得分:2)

你的财产名称不正确。它是ddl而非dll

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