如何编写 Criteria Query 来检查同一列中的多个值以及其他 WHERE 条件?

How to write Criteria Query that checks for multiple values in same column along with other WHERE conditions?

请将以下SQL查询转换为条件查询-------- 我有以下 table 人-

ID 姓名 代码
1 汤姆 一个
2 哈利 B
3 汤姆 C
4 约翰 一个
5 莎莉 C
6 汤姆 B
7 汤姆 D

查询必须return满足条件的记录列表- Name='Tom' AND Code='A' or 'B' or 'C' ----在这种情况下只有两条记录-----

ID 姓名 代码
1 汤姆 一个
3 汤姆 C
6 汤姆 B

SQL 查询将是这样的----

Select * from PEOPLE
where   NAME='TOM' and CODE in ('A' ,'B','C') ;

如何将此 SQL 查询转换为 CriteriaQuery?

我可以编写 criteriaQuery 直到第一个 where 条件--

Criteria cr = session.createCriteria(People.class);
         cr.add(Restrictions.eq("name","Tom"));

你可以试试这个代码:

ArrayList<String> values= new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");

//Your creteria
Criteria cr = session.createCriteria(People.class);

//Array of conditions
List<Criterion> conditions = new ArrayList<Criterion>();

Criterion nameCr= Restrictions.eq("name", "Tom"); 
conditions.add(nameCr);

Criterion codeCr =Restrictions.in("code", values) ;
conditions.add(codeCr);


Conjunction conjunction = Restrictions.conjunction();

for (Criterion criterion : conditions) {
conjunction.add(criterion);
}

cr.add(conjunction);