2012-07-31 45 views
1

我有这个问题与休眠,当我尝试检索使用标准的独特结果休眠从表返回所有的内容。休眠,通过主键搜索返回所有从表

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映射。

我是否需要在上述标准示例中添加内容?

回答

2

The documentation说:

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

(重点煤矿)

为什么不直接使用Session.get()如果你有标识?

+0

感谢您的回复。我没有意识到我可以使用session.get()。我只是在做一个例子。那么标识符==主键?和关联==注释字段?奇怪的是,我不能使用它们与条件搜索?对不起,愚蠢的问题,我第一次使用休眠。 – SneakyMummin 2012-07-31 13:48:26

+0

BTW。 session.get()工作正常。谢谢 – SneakyMummin 2012-07-31 13:51:46

+0

关联= OneToOne,OneToMany,ManyToOne和ManyToMany。与另一个实体的关联。 – 2012-07-31 13:52:47