2012-10-09 235 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