2017-11-17 24 views
0

こんにちは、@TransactionalであるCDI Named Beanに問題があります。トランザクションラップメソッドは永続化または削除されません

私はWildFly 11.1.0.Finalを使用します。

ここでコード:https://gist.github.com/stefanwendelmann/7a1f8352900067d5a59826d6ee205044

これは私が "にDoChange" メソッドを呼び出すだけEmpfangseinheittypenparameterを編集した場合は、em.removeとem.persistが引き金といけないのpersistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" 
      xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
      http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="QuoLoco" transaction-type="JTA"> 
    <description>Verbindung zur QuoLoco Datenbank</description> 
    <jta-data-source>java:/QUOLOCO_NORM</jta-data-source> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
    <properties> 
     <property name="hibernate.format_sql" value="false"/> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/> 
     <property name="hibernate.id.new_generator_mappings" value="false"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

です流す。

i「がにDoChange」メソッドを呼び出すと、メインEmpfangseinheittypenのempfangseinheittypの一部を編集したとき、私はEmpfangseinheittypenparameterで検索を行うには、何が問題をやっているフラッシュ

を必要といけませんか?

どちらの方法も公開されています。

アプリケーションの絵をご覧下さいコメントによると、あなたの助け

+0

これはまだ関連している場合。私はCDI-Transactionalでいくつかのテストを行った。 EJBとの大きな違いはありません。したがって、いくつかの質問:あなたはどのように変化がフラッシュされていないことを知りましたか?どのDBMSを使用していますか?サブクラスまたは別のBeanでdoChangeを呼び出しましたか? – aschoerk

+0

こんにちは@aschoerk私たちはSQL Server 2008 R2を使用しています。この呼び出しは、xhtml JSFフロントエンドからの呼び出しです。今度は、私たちのアプリケーションに合わせてBMTに変更しました。 –

+0

Ahh SqlServer 2008、MVCCはありません。しかし、どうやって変化が洗い流されていないのか分かりましたか?サブクラスまたは別のBeanでdoChangeを呼び出しましたか? – aschoerk

答えて

0

を事前に

感謝を貼ら、にDoChangeは同じBeanから呼び出されます。 問題は@Transactional method called from another method doesn't obtain a transactionに似ています。つまり、トランザクションはdoChangeで終了しないため、メソッドから戻るときにフラッシュを実行することはできません。

+0

@Transactional(TxType.REQUIRES_NEW)でメソッドに注釈を付けることを試みたが、同じ効果を得た –