H2, JPA2, JBoss AS 7 and Transactions



我有一个测试,当我使用MySQL后端时运行完美。

persistence.xml:

<persistence-unit name="pu">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:jboss/datasources/mysqlTM</jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.cache.use_second_level_cache" value="true" />
        <!-- Properties for Hibernate -->
        <property name="hibernate.hbm2ddl.auto" value="create-drop" />
        <property name="hibernate.show_sql" value="true" />
    </properties>
</persistence-unit>

但是,当我切换到H2如下:

persistence.xml

    <persistence-unit name="pu">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
        <property name="hibernate.cache.use_second_level_cache" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="create-drop" />
        <property name="hibernate.show_sql" value="true" />
    </properties>
</persistence-unit>

使用库存JBOSS 7.1安装中定义的标准数据源,我得到以下例外:

Caused by: javax.persistence.TransactionRequiredException: JBAS011469: Transaction is required to perform this operation (either use a transaction or extended persistence context)

Google几乎没有帮助。我希望仅使用H2进行测试以加快测试过程。

事先感谢您的任何帮助,

回答问题,以便可以关闭。

事实证明,与交易有关的错误消息是红her的。由于MySQL和H2在查询中处理案例敏感性的不同方式引起的错误。

更新查询以使情况敏感解决问题。

最新更新