gpt4 book ai didi

java - Hibernate 和 spring mvc 删除和更新

转载 作者:可可西里 更新时间:2023-11-01 08:36:58 24 4
gpt4 key购买 nike

我们正在使用 Spring MVC 和 hibernate 开发一个 spring 应用程序。现在我们遇到了一个我们无法解决的问题。当我们试图删除一些东西时,问题就出现了。

如果我们删除该页面,则可以正常加载并继续进行,就像一切都成功一样,但数据库中的值不会被删除。

这是我们的代码:

这是 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 :

@Controller
public class TestingController {

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

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

}

这是 hibernate 配置:

<!-- 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>

我知道这是一堵代码墙,对此我很抱歉,但我想我提供了尽可能多的细节。

提前致谢

编辑:数据库中有一个id为1的值。

最佳答案

您的 xml 中可能缺少 tx:annotation-driven - 这是触发为 @Transaction 注释 bean 创建代理的那个 - 如果请求不在事务中,则删除不会工作。

关于java - Hibernate 和 spring mvc 删除和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9296136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com