在Hibernate中通过任意属性查找对象

时间:2012-02-04 12:33:19

标签: java hibernate

我对Hibernate(4)和ORM一般都比较新,并且想知道这是通过属性查找对象的最简单或最方便的方法。

class Foo {

    private Long id;

    private String name;

    private Integer age;

    private Integer favoriteNumber;

    private String catchphrase;

}

假设我有Foo的实例,属性是任意设置的,换句话说,我不知道设置了哪些属性(可能没有设置id)。

基于非null的属性,我想从数据库中找到任何匹配的对象。

理想情况下,我想使用这样的方法:

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

PS。 我不想用反射来完成这个!

1 个答案:

答案 0 :(得分:5)

使用案例的最佳方法是通过示例使用查询:

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

更新: 通过示例查询不包括搜索中的id属性。我在这里假设您对id的查询不感兴趣。如果您知道id并且您对id的查询感兴趣,则需要单独执行:

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