2012-02-04 61 views
3

我對Hibernate(4)和ORM一般都比較陌生,想知道哪個是最容易或最便捷的方式來查找對象的屬性在Hibernate中通過任意屬性查找對象

class Foo { 

    private Long id; 

    private String name; 

    private Integer age; 

    private Integer favoriteNumber; 

    private String catchphrase; 

} 

說我有Foo一個實例,屬性是任意的,或者換句話說,我不知道設置(ID可能沒有被設置),該屬性。

基於不在null的屬性,我想找到從數據庫中的任何匹配的對象(S)。

理想我想使用的方法是這樣的:

session.getCurrentSession().find(foo);返回的Foo列表。

PS。 我不想用反射來完成這個!

回答

5

到您的使用情況下,最好的方法是通過例如使用查詢:

session.getCurrentSession() 
    .createCriteria(Foo.class).add(Example.create(foo)).list(); 

UPDATE: 查詢的例子並不包括在搜索中的id屬性。我在這裏假設你對id的查詢不感興趣。如果你知道ID和你有興趣通過ID查詢你需要做一個單獨的:

(Foo) session.getCurrentSession().get(Foo.class, fooId);