我的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访问数据库的方式也有任何错误。我的意思是使用事务性注释或打开会话。
修改
当我删除保存新类别的代码时,会显示正确的输出。在检查控制台之前,只有插入工作正常,但现在选择也正常。
答案 0 :(得分:1)
我觉得代码
Category category = new Category();
category.setName("Hello");`
正在创建一个id为0的实体(如果未声明,则整数默认为0)并且正在更新DB中的现有实体。我没有看到你在这里明确设置ID。请设置ID并查看。