Java 如何通过当前字段从数据库中检索对象
我使用Hibernate 4并拥有实体项:Java 如何通过当前字段从数据库中检索对象,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,我使用Hibernate 4并拥有实体项: @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实现中,我希望通过引
@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查找对象
如何将标准添加到此代码中?假设:产品中的id为“id” 或使用别名:
Item temp = (Item) session.createCriteria(Item.class)
.createAlias("product", "p")
.add(Restrictions.eq("p.id", productId))
.uniqueResult();
首先告诉我们什么不起作用,以及到目前为止您尝试了什么。当数据库中不存在对象时,会出现java.lang.NullPointerException。如何验证异常?从哪里获得NPE?抱歉,我不明白什么是NPE。请发布代码并告诉我们NullPointerException发生在哪一行。我只是忘记了验证temp。如果(temp==null){temp=item},我会这样做。它起作用了!非常感谢你。
Item temp = (Item) session.createCriteria(Item.class)
.createAlias("product", "p")
.add(Restrictions.eq("p.id", productId))
.uniqueResult();