初学者:春天有Hibernate 4疑点

时间:2013-04-22 12:25:51

标签: java spring hibernate

我的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访问数据库的方式也有任何错误。我的意思是使用事务性注释或打开会话。

修改

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

1 个答案:

答案 0 :(得分:1)

我觉得代码

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

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