2012-02-04 84 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);