2017-11-17 18 views
0

안녕하세요, @Transactional 인 CDI Named Bean에 문제가 있습니다.트랜잭션 래핑 된 메서드가 지속되지 않거나 제거되지 않는다

나는 WildFly 11.1.0. 최종을 사용합니다. 여기

코드 : 나는 방법 "doChange"만 편집 Empfangseinheittypenparameter를 호출 할 때 https://gist.github.com/stefanwendelmann/7a1f8352900067d5a59826d6ee205044

이것은 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> 

되면, em.remove 및 em.persist는 트리거 해달라고 플러시.

내가 방법 "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은 동일한 빈에서 호출됩니다. 이 문제는 @Transactional method called from another method doesn't obtain a transaction과 비슷합니다. 즉 트랜잭션이 doChange로 끝나지 않으므로 메서드에서 반환 할 때 플러시를 수행 할 수 없습니다.

+0

@Transactional (TxType.REQUIRES_NEW) 메서드에 주석을 달았지만 같은 효과를 얻었습니다. –