Спящий и весенний mvc Удаление и обновление - PullRequest
3 голосов
/ 15 февраля 2012

Мы разрабатываем приложение Spring с Spring MVC и hibernate.Теперь мы столкнулись с проблемой, которую не можем решить. Проблема возникает, когда мы пытаемся что-то удалить.

Если мы удаляем страницу, она просто загружается нормально и идет дальше, как будто все выполнено успешно, но значение вбаза данных не удалена.

Вот наш код:

Это TestDao

@Repository
public class TestDaoImpl implements TestDao {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public Test get(int id) {
        return (Test)this.sessionFactory.getCurrentSession().createQuery("FROM Test WHERE id =:ident").setParameter("ident",id).uniqueResult();
    }

    @Override
    public void delete(int id) {

        this.sessionFactory.getCurrentSession().delete(this.get(id));

    }
}

Это наш сервис(бизнес-уровень)

@Service("testService")
public class TestServiceImpl implements TestService {

    private final TestDao testDao;

    @Inject
    public TestServiceImpl(TestDao testDao)
    {
        this.testDao = testDao;
    }

    @Override
    @Transactional
    public void delete(int id) {
          testDao.delete(id);
    }
}

А это контроллер:

@Controller
public class TestingController {

    @Qualifier("testService")
    @Autowired
    private TestService testService;

    @RequestMapping(value = "/testing")
    public ModelAndView testing()
    {
        testService.delete(1);
        return new ModelAndView("home");
    }

}

Это конфигурация гибернации:

<!-- Parse database properties -->
    <context:property-placeholder location="classpath:db/db.properties"/>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="mappingResources">
            <list>
                <value>db/mappings/User.hbm.xml</value>
                <value>db/mappings/Authority.hbm.xml</value>
                <value>db/mappings/Car.hbm.xml</value>
                <value>db/mappings/Address.hbm.xml</value>
                <value>db/mappings/DrivingDay.hbm.xml</value>
                <value>db/mappings/Message.hbm.xml</value>
                <value>db/mappings/Ride.hbm.xml</value>
                <value>db/mappings/RouteAgreement.hbm.xml</value>
                <value>db/mappings/Route.hbm.xml</value>
                <value>db/mappings/RouteTime.hbm.xml</value>
                <value>db/mappings/SocialMediaLogin.hbm.xml</value>
                <value>db/mappings/Variables.hbm.xml</value>
                <value>db/mappings/Waypoint.hbm.xml</value>
                <value>db/mappings/Test.hbm.xml</value>
            </list>
        </property>
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
               <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <bean id="transactionManager"
          class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

Я знаю, что это стена кода, я сожалею об этом, но я думал, что предоставлю как можно больше деталей.

Заранее спасибо

Редактировать: В базе данных есть значение с идентификатором 1.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Возможно, вам не хватает tx:annotation-driven в вашем xml - это тот, который запускает создание прокси для аннотированных bean-компонентов @Transaction - если запрос не находится внутри транзакции, удаление не будет работать.

0 голосов
/ 15 февраля 2012

Попробуйте, заключить вашу транскрипцию как начало / конец, как это.

Transaction tx = session.beginTransaction();
// your operation.
tx.commit();

Похоже, операция откатывается после выполнения кода. вам нужно совершить транзакцию.

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