/** * @return a {@link Criterion} using this field as a literal value */ public Criterion asCriterion() { return Criterion.literal(this); }
/** * @return a {@link Criterion} using this field as a literal value */ public Criterion asCriterion() { return Criterion.literal(this); }
public void testLiteralCriterions() { // null and not null evaluate to false assertEquals(0, database.count(Employee.class, Criterion.literal(null))); assertEquals(0, database.count(Employee.class, Criterion.literal(null).negate())); // numeric literal; values other than 0 (including negative) evaluate to true assertEquals(0, database.count(Employee.class, Criterion.literal(0))); assertEquals(6, database.count(Employee.class, Criterion.literal(10))); assertEquals(6, database.count(Employee.class, Criterion.literal(-10))); assertEquals(6, database.count(Employee.class, Criterion.literal(0).negate())); assertEquals(0, database.count(Employee.class, Criterion.literal(10).negate())); // text literal; SQLite will try to coerce to a number assertEquals(0, database.count(Employee.class, Criterion.literal("sqlite"))); assertEquals(6, database.count(Employee.class, Criterion.literal("sqlite").negate())); assertEquals(6, database.count(Employee.class, Criterion.literal("1sqlite"))); // coerces to 1 assertEquals(0, database.count(Employee.class, Criterion.literal("1sqlite").negate())); // numeric column Criterion isHappyCriterion = Employee.IS_HAPPY.asCriterion(); assertEquals(5, database.count(Employee.class, isHappyCriterion)); assertEquals(1, database.count(Employee.class, isHappyCriterion.negate())); // text column Criterion nameCriterion = Employee.NAME.asCriterion(); assertEquals(0, database.count(Employee.class, nameCriterion)); assertEquals(6, database.count(Employee.class, nameCriterion.negate())); // function Criterion f = Function.functionWithArguments("length", "sqlite").asCriterion(); assertEquals(6, database.count(Employee.class, f)); assertEquals(0, database.count(Employee.class, f.negate())); }
public void testNeedsValidationUpdatedByQueryFunction() { Query subquery = Query.select(Function.max(Thing.ID)).from(Thing.TABLE).where(Criterion.literal(123)); subquery.requestValidation(); assertTrue(subquery.compile(database.getCompileContext()).sql.contains("WHERE (?)")); Query baseTestQuery = Query.select().from(Thing.TABLE).where(Thing.FOO.isNotEmpty()).freeze(); assertFalse(baseTestQuery.needsValidation()); Query testQuery = baseTestQuery.selectMore(subquery.asFunction()); assertTrue(testQuery.compile(database.getCompileContext()).needsValidation); assertTrue(testQuery.sqlForValidation(database.getCompileContext()).contains("WHERE ((?))")); }
public void testNeedsValidationUpdatedBySubqueryTable() { Query subquery = Query.select(Thing.PROPERTIES).from(Thing.TABLE).where(Criterion.literal(123)); subquery.requestValidation(); assertTrue(subquery.compile(database.getCompileContext()).sql.contains("WHERE (?)")); Query baseTestQuery = Query.select().from(Thing.TABLE).where(Thing.FOO.isNotEmpty()).freeze(); assertFalse(baseTestQuery.needsValidation()); Query testQuery = baseTestQuery.from(subquery.as("t1")); assertTrue(testQuery.compile(database.getCompileContext()).needsValidation); assertTrue(testQuery.sqlForValidation(database.getCompileContext()).contains("WHERE ((?))")); testQuery = baseTestQuery.innerJoin(subquery.as("t2"), (Criterion[]) null); assertTrue(testQuery.compile(database.getCompileContext()).needsValidation); assertTrue(testQuery.sqlForValidation(database.getCompileContext()).contains("WHERE ((?))")); testQuery = baseTestQuery.union(subquery); assertTrue(testQuery.compile(database.getCompileContext()).needsValidation); assertTrue(testQuery.sqlForValidation(database.getCompileContext()).contains("WHERE ((?))")); }