【问题标题】:H2, JPA2, JBoss AS 7 and TransactionsH2、JPA2、JBoss AS 7 和事务
【发布时间】:2012-10-14 09:36:37
【问题描述】:

当我使用 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 进行测试,只是为了加快测试过程。

提前感谢您的帮助,

【问题讨论】:

  • 您能否发布导致异常的代码,包括您用于获取 EntityManager 的行?顺便说一句 - 你不应该需要来自 H2 持久性单元的 providerdialect 属性。
  • @kostja 你带领我走上了正确的道路。与 seam-security 相关的代码,我想创建一个简单的测试用例,即使注入了 seam 事务管理器,它也可以工作。然后我意识到这是因为 MySQL 和 H2 在查询中处理区分大小写的方式不同。谢谢你。 :-D

标签: hibernate jpa-2.0 jboss7.x h2


【解决方案1】:

回答问题以便结束。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多