-1
我「使用Spring MVC和Hibernate和MySQL米休眠沒有找到連接在會話實體
我已經得到了基本上沒有這個
@Transactional("transactionName")
public Product find(List<String> allProductNames){
for(String product: allProductNames){
//find product with productName
Product product = em.createQuery(hql).getSingleResult());
if(product == null){
//create product object
em.persist(newProduct)
}
}
}
由於保存和搜索是其中的一部分代碼同樣的事務,沒有任何東西被提交,直到它退出方法爲止,查詢到數據庫以查找帶有productName的產品總是返回null。我如何強制hibernate在會話中搜索連接的對象?
我試過
SessionImpl session = (SessionImpl) em.getDelegate();
Query query = session.createQuery("searchproductnamequery")
.setParameter("PRODUCT_NAME","iPhone");
boolean found = session.contains(query);
但上述似乎返回虛假。處理這些情況的正確方法是什麼?不應該在默認情況下搜索附加的會話對象和數據庫?
我不想提交的原因是因爲我想在提交之前將計數屬性更新爲產品。
我可以創建一個產品的地圖,然後在最後提交,但是通過兩次100,000次productNames列表循環兩次是非常昂貴的。
如果我知道我可以使用session.get(id)的id,但是如何通過屬性名稱進行搜索?
query.addEntity(Product.class) – swamy 2013-02-20 05:30:55