0

我的 Hibernate.xml

<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

我的控制器

    @RequestMapping("/")
public String index() {
    Category category = new Category();
    category.setName("Hello");
    categoryDao.saveCategory(category);
    return "index";
}

我的 DAO

@Transactional
public void saveCategory(Category category) {
    Session session = sessionFactory.getCurrentSession();
    session.save(category);
    Category category2 = (Category) session.get(Category.class,
            new Integer(0));

    System.out.println("xxxx" + category2.getName());
}

出于测试目的,我目前跳过了我的 BO。否则我会去某个地方吗?我的输出应该是 xxxxParent,它是 id = 0 处的类别名称,但它显示的是从 Controller 传递的 xxxxHello。否则插入工作正常。尝试通过 Hibernate 访问数据库的方式也有任何错误。我的意思是使用事务注释或打开会话。

编辑

当我删除保存新类别的代码时,会显示正确的输出。在检查控制台之前,只有 insert 可以工作,但现在 select 也可以工作。

4

1 回答 1

1

我感觉代码

Category category = new Category();
category.setName("Hello");` 

正在创建一个 id 为 0 的实体(如果未声明,则整数默认为 0),并正在更新数据库中的现有实体。我没有看到您在这里明确设置 ID。请设置id并查看。

于 2013-04-22T13:04:33.587 回答