1

我对 Hibernate 有这个问题,当我尝试使用标准检索唯一结果时,hibernate 会返回表中的所有内容。

Session session = HibernateUtil.beginTransaction();
Customer c = new Customer();
c.setCustId(custId);
Example ex = Example.create(c);
Criteria criteria = HibernateUtil.getSession().createCriteria(Customer.class);
criteria.add(ex);

Customer customer = (Customer)criteria.uniqueResult();

HibernateUtil.commitTransaction();
HibernateUtil.closeSession();

但是使用以下方式查询表:

Customer customer = (Customer)session
                    .createSQLQuery("select * from customer_ where custid = :id")
                    .addEntity(Customer.class)
                    .setInteger("id", custId)
                    .uniqueResult();

返回正确的条目。 custId是表的主键。该类Customer包含2个@OneToMany映射。

我需要在上面的标准示例中添加一些内容吗?

4

1 回答 1

2

文档说:

版本属性、标识符和关联被忽略。

(强调我的)

Session.get()如果您有标识符,为什么不简单地使用?

于 2012-07-31T13:18:07.840 回答