2012-10-09 73 views
0

org.hibernate.Criteria是一个接口。休眠会话和标准

怎么可能呢?

Criteria crit = sess.createCriteria(Cat.class); 
crit.setMaxResults(50); 
List cats = crit.list(); 

如何在没有实现接口的情况下调用标准接口上的方法?

例如

crit.setMaxResults 
crit.list(); 

东西根本我没有到这里。帮我出局

回答

0

会话接口确实有一个实现,其中一个是org.hibernate.internal.CriteriaImpl。看看#createCriteria方法的源代码。

+0

返回“子标准”。仍然困惑 –

+0

'org.hibernate.internal.CriteriaImpl.Subcriteria'也是'org.hibernate.Criteria'的实现。 –

0

您使用接口声明一个变量 - 接口的设计,但它可以是任何实现该接口的类型。我想,Criteriaimpl。 (继续命名那里休眠)。

看看集合框架以及优秀的使用界面。

+0

感谢您的回答。注意到我们将abt设计为接口。但是,API表示它会返回Criteria或“sub criteria”。 –

+0

是的,这与我所说的任何相矛盾,就像一个数组列表是一个列表。 CriterieaImpl是一个标准,只有itnerface公开的方法是可访问的。 – NimChimpsky