зачем вставлять две одинаковые записи и транзакция не откатывается - PullRequest
0 голосов
/ 28 декабря 2018

Я делаю базовый проект javaweb и добавляю к нему весеннюю конфигурацию транзакций, но это не влияет.до этого все работало хорошо.Я искал много страниц в сети, эти конфигурации такие же, как у меня.

Ожидаемый результат - ничего не будет вставлено, но запись была вставлена.

Пожалуйста, помогите мне найти, где проблемаСпасибо,

мой путь обслуживания: com.lidaning.sys.user.service.UserInfoServiceImpl

 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
 </bean>

 <tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
        <tx:method name="insert*" propagation="REQUIRED"/>    
        <tx:method name="*"/>
    </tx:attributes>
 </tx:advice>

 <aop:config>
    <aop:pointcut id="txPointcut" expression="execution(* com.lidaning.sys.user.service..*.*(..))" />
    <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>
 </aop:config>

@Override
public void insertUser(UserInfo u) {
    u.setId("1");
    u.setName("lidaning");
    u.setPassword("***");
    userInfoDao.insertUser(u);
    userInfoDao.insertUser(u);  //occur exception 
}

1 Ответ

0 голосов
/ 29 декабря 2018

У меня есть причина.Потому что Spring дважды загружал serviceBean (spring, springMVC), и это приводило к тому, что сервис терял характеристики транзакций.Когда я отделил контроллер от контекста приложения и вставил его в SpringMVC, он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...