1
我有一個測試,當我使用MySQL後端完美運行。H2,JPA2,JBoss AS 7和Transactions
的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來進行測試,只是爲了加快測試過程。
在此先感謝您的幫助,
您能否發佈導致異常的代碼,包括您用於獲取EntityManager?的行。順便說一句 - 你不應該需要H2持久化單元的'provider'和'dialect'屬性。 – kostja
@ kostja你讓我走上了正確的道路。與煤層安全有關的代碼,我想創建一個簡單的測試用例,甚至在注入seam事務管理器的時候,它也能工作。然後我意識到這是因爲MySQL和H2在查詢中處理區分大小寫的不同方式。謝謝。 :-D –
很高興我能幫忙:) – kostja