我不能更新我的对象

时间:2012-01-06 17:41:13

标签: hibernate spring

我正在用hibernate构建一个spring web应用程序。我不知道为什么,但我不能更新我的对象。在我的配置下面

                                             

<bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="luxpolDataSource" />
    <property name="annotatedClasses">
        <list>
            <value>com.fixus.luxpol.bean.House</value>
            <value>com.fixus.luxpol.bean.Photo</value>
            <value>com.fixus.luxpol.bean.Service</value>
            <value>com.fixus.luxpol.bean.User</value>
            <value>com.fixus.luxpol.bean.AccountRole</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>                         
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
</bean>

<mvc:annotation-driven />
<context:component-scan base-package="com.fixus.luxpol" />
<context:component-scan base-package="com.fixus.luxpol.bean" />

所以这是我的配置。当我想更新一个对象时,我得到了这个

ERROR: org.hibernate.jdbc.AbstractBatcher - Exception executing batch: 
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
    at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:85)
    at ...

ERROR: org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
    at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:85)
    at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:70)
    at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:90)...

我使用update(Object obj)方法用hibernate模板更新

----更新

我已经检查过我的问题。我已经将方法从更新更改为saveOrUpdate,并且它始终在db中创建新记录。我应该说我通过表单发送这个对象。我的意思是我有一个带有对象属性的表单,我通过POST将它发送到我调用update(saveOrUpdate)方法的方法。

@RequestMapping(value = "/admin/house/update", method = RequestMethod.POST)
public String updateHouse(House house, Model model) {
    model.addAttribute("step", 3);
    this.houseDao.update(house);
    logger.info("test: " + house.getTitle());
    return "houseAdmin";
}

我在记录器中获取标题,因此传递了对象。我应该使用House对象的控制器来创建它的实例吗?

ANSWER

好的问题解决了。我有时候这么傻。我没有通过表单传递id,因此更新方法无法正常工作。抱歉你的时间

0 个答案:

没有答案