同一列的多个条件

时间:2013-07-03 13:13:15

标签: java hibernate

我有一个具有相同值但其他列不同的列。我想写这个条件的搜索。我该怎么做呢 ?我正在获得重复的标准例外。

if(!StringUtils.isEmpty(src)){                           
criteria.createCriteria("params").add(Restrictions.eq("tagName",   
OptionalParams.TagName.SOURCE)).add(Restrictions.ilike("name", "Version")).add(Restrictions.ilike("value", src,MatchMode.START));
}

if(!StringUtils.isEmpty(tgt)){
                criteria.createCriteria("params").add(Restrictions.eq("tagName", OptionalParams.TagName.TARGET))
                .add(Restrictions.ilike("name", "Version")).add(Restrictions.ilike("value", tgt,MatchMode.START));
            }

  57273 Version 0       1.2.0   9dbb
  57275 Version 1       1.2.3   9dbb

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这可能会对你有所帮助。

 Criteria criteria = session.createCriteria("params");
    if(!StringUtils.isEmpty(src)){                           
    criteria.add(Restrictions.eq("tagName",   
    OptionalParams.TagName.SOURCE)).add(Restrictions.ilike("name", "Version")).add(Restrictions.ilike("value", src,MatchMode.START));
    }

    if(!StringUtils.isEmpty(tgt)){
                    criteria.add(Restrictions.eq("tagName", OptionalParams.TagName.TARGET))
                    .add(Restrictions.ilike("name", "Version")).add(Restrictions.ilike("value", tgt,MatchMode.START));
                }

您获得了异常,因为您在同一对象的同一事务中编写了两次条件。此外,createCriteria(*.class)应该将参数作为类。

有关详细信息,请查看http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html