我对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。 我不想用反射来完成这个!
答案 0 :(得分:5)
使用案例的最佳方法是通过示例使用查询:
session.getCurrentSession()
.createCriteria(Foo.class).add(Example.create(foo)).list();
更新: 通过示例查询不包括搜索中的id属性。我在这里假设您对id的查询不感兴趣。如果您知道id并且您对id的查询感兴趣,则需要单独执行:
(Foo) session.getCurrentSession().get(Foo.class, fooId);