如何通过当前字段从db检索对象

时间:2013-12-20 07:55:15

标签: java hibernate spring-mvc

我使用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

如何为此代码添加条件?

1 个答案:

答案 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();