【问题标题】:Using JPA : Schema not created in H2使用 JPA:未在 H2 中创建架构
【发布时间】:2014-01-13 17:17:01
【问题描述】:

我有一个 Maven jar 项目。

我已将 JBoss standalone.xml 配置如下:

<datasources>
     <datasource jndi-name="java:jboss/datasources/myDS" pool-name="myDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:h2:tcp://localhost/C:\databases\test</connection-url>                
            <driver>h2</driver>
            <security>
                <user-name>sa</user-name>
            </security>
      </datasource>
      <drivers>
               <driver name="h2" module="com.h2database.h2">
               <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
            </driver>
      </drivers>
</datasources>

persistence.xml 文件如下:

<persistence-unit name="primary" transaction-type="JTA">

    <jta-data-source>java:jboss/datasources/myDS</jta-data-source>

    <class>my.package.Person</class>

    <properties>
        <!-- Properties for Hibernate -->
        <property name="hibernate.hbm2ddl.auto" value="create" />
        <property name="dialect" value="org.hibernate.dialect.H2Dialect" />
        <property name="hibernate.show_sql" value="true" />
    </properties>
</persistence-unit>

首先,我通过 H2 控制台进行身份验证。然后我安装我的 jar “Maven install”。

但不幸的是,没有创建架构。可能缺少什么?

非常感谢。

【问题讨论】:

    标签: hibernate jpa jboss h2


    【解决方案1】:

    请在您的standalone.xml 中创建数据源、安全性和驱动程序

    <subsystem xmlns="urn:jboss:domain:datasources:1.1">
        <datasource jta="true" jndi-name="java:jboss/datasources/myDataSource" pool-name="myDataSource" enabled="true" use-ccm="false">
                        <connection-url>jdbc:mysql://localhost:3306/testDB</connection-url>
                        <driver-class>com.mysql.jdbc.Driver</driver-class>
                        <driver>mysql</driver>
        <security>
                 <user-name>root</user-name>
                 <password>root</password>
            </security>
        <drivers>
                  <driver name="h2" module="com.h2database.h2">
                  <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                  </driver>
                  <driver name="mysql" module="com.mysql">
                  <xa-datasource-class>com.mysql.jdbc.Driver</xa-datasource-class>
                  </driver>
            </drivers>
    </datasources>
    </subsystem>
    

    修改persistence.xml 创建持久性单元和事务类型。 创建 和 属性。

    <persistence-unit name="abc" transaction-type="JTA">
    
        <jta-data-source>java:jboss/datasources/myDataSource</jta-data-source>
    
        <class>my.package.ClassName</class>
    
        <properties>
            <!-- Properties for Hibernate -->
            <property name="hibernate.hbm2ddl.auto" value="create" />
            <property name="dialect" value="org.hibernate.dialect.H2Dialect" />
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>
    

    创建一个java类HibernateUtil.java 并将持久性单元名称提供给 entityManagerFactory = Persistence.createEntityManagerFactory("abc");

    public class HibernateUtil {
    
        private static final EntityManagerFactory entityManagerFactory;
        static {
                    try {
                         entityManagerFactory = Persistence.createEntityManagerFactory("abc");
                         System.out.println("Entity Menager Test.............."+ entityManagerFactory);
                    } catch (Throwable ex) {
    
                        System.err.println("Initial SessionFactory creation failed." + ex);
                        throw new ExceptionInInitializerError(ex);
    
                      }
        }
    
    public static EntityManagerFactory getEntityManagerFactory() {
             return entityManagerFactory;
        }
    
    }
    

    【讨论】:

    • 感谢您的宝贵回答:)
    猜你喜欢
    • 2021-08-20
    • 2019-06-12
    • 2021-12-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多