这是我写的方法
public static <T> List selectOnCriteria(SessionFactory sessionFactory, int maxResults, T model)
{
List resultList=null;
session=sessionFactory.openSession();
Criteria criteria= session.createCriteria(model.getClass());
criteria.add(Example.create(model).ignoreCase());// only for exact search, uppercase and lowercase are both included in ignorecase
if(maxResults>0)
criteria.setMaxResults(maxResults);
resultList=criteria.list();
return resultList;
}
这是我的模型之一
public class UserModel
{
@Id
private String username;
private String password;
private String company;
//getters and setters are also defined
}
现在假设表中有这样的条目
Username: Chris
Password: Nolan
Company : Syncopy
如果我用所有这些值填充我的模型,那么我获得的 resultList 有 1 条记录。但是,如果仅使用用户名填充我的模型,即在这种情况下为 Chris,我收到的结果列表始终是一个空的 ArrayList。
我的项目 JPA 规范是 2.0,但如果这是问题所在,为什么它在第一种情况下返回对象而不是第二种情况。
其次,如果这是问题所在:有没有其他方法可以设计一个可以采用任何模型(任何类型,填充任意数量的字段)的通用类?
我要做的最后一件事是为我的所有模型创建一个搜索方法。
谢谢,祝你有美好的一天!