H2,JPA2,JBoss AS 7和Transactions

时间:2012-10-24 10:46:35

标签: hibernate jpa-2.0 jboss7.x h2

当我使用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)
谷歌一直没什么帮助。我更愿意使用H2进行测试,仅仅是为了加快测试过程。

提前感谢您的任何帮助,

1 个答案:

答案 0 :(得分:0)

回答问题,以便关闭。

事实证明,关于交易的错误信息是红鲱鱼。该错误是由于MySQL和H2在查询中处理区分大小写的不同方式引起的。

将查询更新为区分大小写可解决此问题。