java - 将对象保存在另一个对象中时出现 Hibernate getHibernateTemplate 问题

标签 java mysql hibernate spring foreign-keys

我最近更改了我的代码以引用 getHibernateTemplate(),现在我的表单似乎无法正确保存,这是代码:


  public void saveForm(EcoFormFill form, int userId)
  throws RemoteException
  {
    User tmpUser = (User)getHibernateTemplate().load(User.class, new Integer(userId));
    form.setUser(tmpUser);
    getHibernateTemplate().saveOrUpdate(form);
  }

它提示它不能将“user_id”设置为空(我的数据库中的一个约束)...以前我使用这种方法:


  public void saveForm(EcoFormFill form, int userId)
  throws RemoteException
  {
    Session ses = getHibernateTemplate().getSessionFactory().openSession();
    try
    {
      User tmpUser = (User) ses.load(User.class, new Integer(userId));
      form.setUser(tmpUser);
      ses.saveOrUpdate(form);
    }
    catch (Exception e)
    {
      log.error(e.getMessage(), e);
      throw new RemoteException(e.getMessage());
    }
    finally
    {
      ses.flush();
      ses.close();
    }
  }

这种方法工作得很好,但它让我对单元测试感到失望,所以我需要使用以前的方法和 getHibernateTemplate()。

这是我的表单和未能填充的 user_id 之间的关联:

<id name="id">
  <generator class="native"/>
</id>
...
...
<many-to-one column="user_id" name="user" not-null="false"/>

在这两种情况下生成的 SQL 语句是相同的,只是 user_id 没有正确插入到参数中。

最佳答案

Trevor 是你的应用程序上下文似乎是这样的

</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="yourRootPackage" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.hbm2ddl.auto">create</prop>                
        </props>
    </property>
</bean>

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


看上面,这部分代表您的应用程序上下文中所需的最低限度。

关于java - 将对象保存在另一个对象中时出现 Hibernate getHibernateTemplate 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3331311/

相关文章:

java - 如何将文本文件作为字符串读取并仅提取单个字符? "0"

Java,什么是持久化对象的直接、简单的方法?所有方法都需要序列化吗?

删除行后mysql表的大小没有减小

php - 结果从数据库中可用的确切行返回减去 1(负 1)的值

postgresql - 为什么 hibernate 复制行?

java - 线程中的异常 "main"org.hibernate.MappingException : Association references unmapped class hibernate

java - Java中的闭包-捕获的值-为什么会出现这种意外结果?

java - 安全登录,不允许用户使用 URL 进行导航

java - Hibernate + Mysql 创建sessionFactory失败

java - 绑定(bind)数据成员的 Hql 查询