如何编写 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);
请将以下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);