这是我写的方法
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,但如果这是问题,为什么它会在第一种情况下返回我的对象而不是第二种情况。
其次,如果这是问题所在:有没有其他方法可以设计一个可以采用任何模型的通用类(任何类型,填充任意数量的字段)?
我要做的最后一件事是为我的所有模型创建一个搜索方法。
谢谢,祝你有个美好的一天!