我使用Hibernate 4并拥有实体 Item :
@Entity
@Table(name = "cart")
public class Item {
@Id
@GeneratedValue
private int id;
@OneToOne(targetEntity = Product.class)
private Product product;
@Column
private int count
// Getters and setters here
}
在我的DAO实现中,我想通过引用字段 product 从db获取对象并更新它。我试试这个:
public void addItem(Item item) {
int productId = item.getProduct().getId();
Session session = sessionFactory.getCurrentSession();
Item temp = (Item) session.get(Item.class, productId);
temp.setCount(100);
session.saveOrUpdate(temp);
}
此代码按 id 查找对象,但我需要 productId 。
如何为此代码添加条件?
答案 0 :(得分:1)
假设:产品中的ID为“id”。
Criteria criteria = session.createCriteria(Item.class)
.setFetchMode("Product", FetchMode.JOIN)
.add(Restrictions.eq("product.id", productId));
Item temp = (Item) criteria.uniqueResult();
或者使用别名:
Item temp = (Item) session.createCriteria(Item.class)
.createAlias("product", "p")
.add(Restrictions.eq("p.id", productId))
.uniqueResult();