0
코드를 실행하면 org.springframework.transaction.UnexpectedRollbackException Transaction rolled back because it has been marked as rollback-only
이 표시됩니다. 그러나 그것의 압연 뒤.org.springframework.transaction.UnexpectedRollbackException : 롤백 전용으로 표시 되었기 때문에 트랜잭션이 롤백 됨
내 코드 :
서비스 수준
public void checkTransaction(Users user) throws Exception {
adminDao.insertUser(user);
System.out.println("Transaction active :: " + TransactionSynchronizationManager.isActualTransactionActive());
throw (new Exception("Testing Transaction"));
}
XML
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<tx:annotation-driven proxy-target-class="true"
transaction-manager="transactionManager" />
<aop:config>
<aop:pointcut id="serviceOperation"
expression="execution(* myapp.admin.service.AdminService.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />
</aop:config>
POJO
My POJO (사용자) Bean은 hbm 파일에 매핑 된 주석이 없습니다. 그러나 매핑 리소스에 등록됩니다.
<bean id="mysessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>myapp/admin/vo/Users.hbm.xml</value></list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
'rollback-for = "java.lang.Exception"'maybe? – msparer
아니요. 작동 안함. 같은 오류를 표시합니다. –
'adminDao.insertUser (user)'메소드에 예외가있을 수 있습니다. 작동하는지 확인하십시오. –