试图为休眠标准搜索制作方法

时间:2018-05-18 09:08:40

标签: java hibernate criteria hibernate-criteria

我正在尝试使用hibernate条件搜索用户登录的方法。在这种情况下我无法理解如何设置

propertyName

用于该方法。我知道column name应该是@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { String email=req.getParameter("email"); String password=req.getParameter("password"); String [] arr = {email,password}; creatreCriteria(Account.class); for (int i = 0; i < arr.length; i++) { addeqResrictions("colum name", arr.length); } } catch (Exception e) { } } 。但是我怎么能得到这个并且代码中有任何错误。 谢谢高级!

这是我的servlet

 public static Criteria creatreCriteria(Class PC){
        getSession().createCriteria(PC);
        return criteria;
   }
    public static  SimpleExpression addeqResrictions(String p, Object v){
        criteria.add(Restrictions.eq(p, v));
        return simpleExpression;
    }
  } 

这是我的会话课。

2 个答案:

答案 0 :(得分:1)

属性名称不应是列名,而应是持久化类的属性名(字段名)。因此,如果您的班级User包含字段login

@Entity
class User {

  @Column
  private String login;

}

您可以使用此条件

Criteria criteria = getSession().createCriteria(User.class);
criteria.add(Restrictions.eq("login", someLogin);

答案 1 :(得分:1)

我认为最好的方法是解析包含值的Map。你的方法应该是这样的。

HashMap<String, Object> map = new HashMap();
map.put("ColName", object1);
map.put("ColName", object2);
map.put("ColName", object3);

addeqRestrictions(map);

用法,

{{1}}