mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
#656199 : fixed containsKey and containsValue patterns
This commit is contained in:
parent
6505db70f1
commit
40fb43a545
@ -39,6 +39,9 @@ public class HQLTemplates extends JPQLTemplates{
|
||||
add(type, "{0}[{1}]");
|
||||
}
|
||||
add(PathType.LISTVALUE_CONSTANT, "{0}[{1s}]");
|
||||
|
||||
add(Ops.CONTAINS_KEY, "{1} in indices({0})");
|
||||
add(Ops.CONTAINS_VALUE, "{1} in elements({0})");
|
||||
|
||||
// date time
|
||||
add(Ops.DateTimeOps.MILLISECOND, "0"); // NOT supported in HQL
|
||||
|
||||
@ -16,6 +16,7 @@ import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -27,6 +28,8 @@ import com.mysema.query.jpa.JPQLQuery;
|
||||
import com.mysema.query.jpa.domain.Cat;
|
||||
import com.mysema.query.jpa.domain.DomesticCat;
|
||||
import com.mysema.query.jpa.domain.QCat;
|
||||
import com.mysema.query.jpa.domain.QShow;
|
||||
import com.mysema.query.jpa.domain.Show;
|
||||
import com.mysema.query.types.ArrayConstructorExpression;
|
||||
import com.mysema.query.types.ConstructorExpression;
|
||||
import com.mysema.query.types.Expression;
|
||||
@ -146,6 +149,12 @@ public abstract class AbstractStandardTest {
|
||||
cat.setBirthdate(birthDate);
|
||||
save(cat);
|
||||
savedCats.add(cat);
|
||||
|
||||
Show show = new Show();
|
||||
show.acts = new HashMap<String,String>();
|
||||
show.acts.put("a","A");
|
||||
show.acts.put("b","B");
|
||||
save(show);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -176,16 +185,19 @@ public abstract class AbstractStandardTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Aggregates(){
|
||||
public void Aggregates_UniqueResult(){
|
||||
// uniqueResult
|
||||
assertEquals(Integer.valueOf(1), catQuery().uniqueResult(cat.id.min()));
|
||||
assertEquals(Integer.valueOf(6), catQuery().uniqueResult(cat.id.max()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Aggregates_List(){
|
||||
// list
|
||||
assertEquals(Integer.valueOf(1), catQuery().list(cat.id.min()).get(0));
|
||||
assertEquals(Integer.valueOf(6), catQuery().list(cat.id.max()).get(0));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void DistinctResults(){
|
||||
System.out.println("-- list results");
|
||||
@ -205,49 +217,71 @@ public abstract class AbstractStandardTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void StringOperations(){
|
||||
public void StartsWith(){
|
||||
// startsWith
|
||||
assertEquals(1, catQuery().where(cat.name.startsWith("R")).count());
|
||||
assertEquals(0, catQuery().where(cat.name.startsWith("X")).count());
|
||||
assertEquals(1, catQuery().where(cat.name.startsWithIgnoreCase("r")).count());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void EndsWith(){
|
||||
// endsWith
|
||||
assertEquals(1, catQuery().where(cat.name.endsWith("h123")).count());
|
||||
assertEquals(0, catQuery().where(cat.name.endsWith("X")).count());
|
||||
assertEquals(1, catQuery().where(cat.name.endsWithIgnoreCase("H123")).count());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Contains(){
|
||||
// contains
|
||||
assertEquals(1, catQuery().where(cat.name.contains("eli")).count());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Length(){
|
||||
// length
|
||||
assertEquals(6, catQuery().where(cat.name.length().gt(0)).count());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void IndexOf(){
|
||||
// indexOf
|
||||
assertEquals(Integer.valueOf(0), catQuery().where(cat.name.eq("Bob123")).uniqueResult(cat.name.indexOf("B")));
|
||||
assertEquals(Integer.valueOf(1), catQuery().where(cat.name.eq("Bob123")).uniqueResult(cat.name.indexOf("o")));
|
||||
|
||||
assertEquals(Integer.valueOf(1), catQuery().where(cat.name.eq("Bob123")).uniqueResult(cat.name.indexOf("o")));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void StringOperations(){
|
||||
// case-sensitivity
|
||||
if (!getTarget().equals(Target.MYSQL)){ // NOTE : locate in MYSQL is case-insensitive
|
||||
assertEquals(0, catQuery().where(cat.name.startsWith("r")).count());
|
||||
assertEquals(0, catQuery().where(cat.name.endsWith("H123")).count());
|
||||
assertEquals(Integer.valueOf(2), catQuery().where(cat.name.eq("Bob123")).uniqueResult(cat.name.indexOf("b")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void Paging(){
|
||||
public void Limit(){
|
||||
// limit
|
||||
List<String> names1 = Arrays.asList("Allen123","Bob123");
|
||||
assertEquals(names1, catQuery().orderBy(cat.name.asc()).limit(2).list(cat.name));
|
||||
|
||||
assertEquals(names1, catQuery().orderBy(cat.name.asc()).limit(2).list(cat.name));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Offset(){
|
||||
// offset
|
||||
List<String> names2 = Arrays.asList("Felix123","Mary123","Ruth123","Some");
|
||||
assertEquals(names2, catQuery().orderBy(cat.name.asc()).offset(2).list(cat.name));
|
||||
|
||||
assertEquals(names2, catQuery().orderBy(cat.name.asc()).offset(2).list(cat.name));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Limit_and_offset(){
|
||||
// limit + offset
|
||||
List<String> names3 = Arrays.asList("Felix123","Mary123");
|
||||
assertEquals(names3, catQuery().orderBy(cat.name.asc()).limit(2).offset(2).list(cat.name));
|
||||
assertEquals(names3, catQuery().orderBy(cat.name.asc()).limit(2).offset(2).list(cat.name));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -316,5 +350,21 @@ public abstract class AbstractStandardTest {
|
||||
public void Null_as_uniqueResult(){
|
||||
assertNull(query().from(cat).where(cat.name.eq(UUID.randomUUID().toString())).uniqueResult(cat));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Map_ContainsKey(){
|
||||
QShow show = QShow.show;
|
||||
assertEquals(1l, query().from(show).where(show.acts.containsKey("a")).count());
|
||||
assertEquals(1l, query().from(show).where(show.acts.containsKey("b")).count());
|
||||
assertEquals(0l, query().from(show).where(show.acts.containsKey("c")).count());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Map_ContainsValue(){
|
||||
QShow show = QShow.show;
|
||||
assertEquals(1l, query().from(show).where(show.acts.containsValue("A")).count());
|
||||
assertEquals(1l, query().from(show).where(show.acts.containsValue("B")).count());
|
||||
assertEquals(0l, query().from(show).where(show.acts.containsValue("C")).count());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -18,8 +18,8 @@ import org.hibernate.annotations.CollectionOfElements;
|
||||
@Entity
|
||||
public class Show {
|
||||
@CollectionOfElements
|
||||
Map<String, String> acts;
|
||||
public Map<String, String> acts;
|
||||
|
||||
@Id
|
||||
int id;
|
||||
public int id;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user