为什么我不能通过使用@Transactional
注释返回的方法获得ID为session.load(product.class,1)
的实体对象product.getName()
的值?当我以这种方式获得产品对象时session.createQuery("from Product as product WHERE product.id = 1)
一切都很好。休眠对象生命周期
编辑
道法
public Product getProduct(Long id) {
return (Product) currentSession().load(Product.class, id);
}
服务方法
@Transactional
public Product getProduct(Long id) {
return productDao.getProduct(id);
}
控制方法 - 它应该发送JSON,但它与错误打破上product.getName()
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
@RequestMapping(value = "/product",headers="Accept=application/json")
public @ResponseBody Product getProduct() {
Product product = productService.getProduct(new Long(1));
System.out.println(product.getName());
return product;
}
你必须告诉一点点。在通过'session.load(product.class,1)'加载产品后调用'product.getName()'时发生了什么?产品对象是否可能是Product类的缓存实例?你能发布你的代码的相关部分吗? – andih 2012-04-23 19:49:13