я не могу обновить свой объект - PullRequest
0 голосов
/ 06 января 2012

Я создаю весеннее веб-приложение с Hibernate. Я не знаю почему, но я не могу обновить свой объект. Ниже моей конфигурации

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

---- ОБНОВЛЕНИЕ

Я кое-что проверил с моей проблемой. Я изменил метод с update на saveOrUpdate, и он всегда создает новую запись в БД. Я должен сказать, что я отправляю этот объект через форму. Я имею в виду, что у меня есть форма со свойствами объекта, и я отправляю ее через метод 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 для создания экземпляра этого?

ОТВЕТ

Хорошо, проблема была решена. Иногда я такой тупой. Я не передавал идентификатор через форму, поэтому метод обновления не мог работать. Извините за ваше время

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