爲什麼我不能通過使用@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