Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 我无法更新我的对象_Hibernate_Spring - Fatal编程技术网

Hibernate 我无法更新我的对象

Hibernate 我无法更新我的对象,hibernate,spring,Hibernate,Spring,我正在用hibernate构建一个SpringWeb应用程序。我不知道为什么,但我不能更新我的对象。低于我的配置 <bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="luxpolDataSource" />

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

<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" />

<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" />
我使用update(objectobj)方法使用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" />
----更新

<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" />
我已经检查了我的问题。我将方法从update更改为saveOrUpdate,它总是在数据库中创建新记录。我应该说我是通过表单发送这个对象的。我的意思是,我有一个带有对象属性的表单,并且我通过POST to方法发送它,在该方法中我调用了update(saveOrUpdate)方法

<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" />
我在logger中获取标题,因此对象被传递。我应该使用House对象的控制器来创建此对象的实例吗

<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" />
答复
好的,问题解决了。有时候我真是太笨了。我没有通过表单传递id,因此更新方法无法工作。抱歉占用您的时间

您在更新任何实体时都会收到此消息吗?不会。我刚刚检查了不同的实体,它工作正常。我应该在此处配置事务管理器吗?我找不到问题所在。一个实体起作用,但该实体不希望:(
<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" />