Module is.codion.framework.domain
Interface Condition
- All Known Subinterfaces:
ColumnCondition<T>,Condition.All,Condition.Combination,CustomCondition
public sealed interface Condition
permits Condition.All, Condition.Combination, ColumnCondition<T>, CustomCondition (not exhaustive)
Specifies a query condition for filtering entities from the database.
Conditions are the foundation of entity queries, providing type-safe filtering capabilities. They can be simple column-based conditions, foreign key relationships, or complex combinations using logical operators.
Condition.All indicates no condition, as in, all entities should be returned.
Conditions are typically created using column factory methods and combined using logical operators:
// Simple conditions using column factory methods
List<Entity> artists = connection.select(
Artist.NAME.like("The %"));
List<Entity> classicalTracks = connection.select(
Track.GENRE_FK.equalTo(classicalGenre));
List<Entity> expensiveTracks = connection.select(
Track.UNIT_PRICE.greaterThan(new BigDecimal("0.99")));
// Complex conditions using logical combinations
List<Entity> filteredAlbums = connection.select(and(
Album.ARTIST_FK.in(selectedArtists),
Album.TITLE.likeIgnoreCase("%live%")));
List<Entity> rockOrMetalTracks = connection.select(or(
Track.GENRE_FK.equalTo(rockGenre),
Track.GENRE_FK.equalTo(metalGenre)));
// Key-based conditions
Entity.Key artistKey = entities.primaryKey(Artist.TYPE, 1);
List<Entity> albumsByKey = connection.select(
Album.ARTIST_FK.equalTo(Condition.key(artistKey)));
// Multiple key conditions
List<Entity.Key> trackKeys = entities.primaryKeys(Track.TYPE, 1, 2, 3);
List<Entity> specificTracks = connection.select(
Condition.keys(trackKeys));
// Complex nested conditions
List<Entity> complexQuery = connection.select(
Select.where(and(
Album.ARTIST_FK.in(popularArtists),
or(
Album.TITLE.likeIgnoreCase("%greatest%"),
Album.TITLE.likeIgnoreCase("%best%"))))
.orderBy(ascending(Album.TITLE))
.build());
// All entities (no filtering)
List<Entity> allArtists = connection.select(all(Artist.TYPE));
// Custom conditions for advanced queries
List<Entity> customQuery = connection.select(
Artist.CUSTOM_CONDITION.get("searchParam", searchValue));
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceA condition specifying all entities of a given type, a no-condition.static interfaceAn interface encapsulating a combination of Condition instances, that should be either AND'ed or OR'ed together in a query context -
Method Summary
Modifier and TypeMethodDescriptionstatic Conditionall(EntityType entityType) static Condition.CombinationReturns a newCondition.Combinationinstance, combining the given conditions using the AND conjunction.static Condition.Combinationand(Collection<Condition> conditions) Returns a newCondition.Combinationinstance, combining the given conditions using the AND conjunction.columns()static Condition.Combinationcombination(Conjunction conjunction, Condition... conditions) Initializes a newCondition.Combinationinstancestatic Condition.Combinationcombination(Conjunction conjunction, Collection<Condition> conditions) Initializes a newCondition.Combinationinstancestatic Conditionkey(Entity.Key key) Creates aConditionbased on the given keystatic Conditionkeys(Collection<Entity.Key> keys) Creates aConditionbased on the given keys.static Condition.CombinationReturns a newCondition.Combinationinstance, combining the given conditions using the OR conjunction.static Condition.Combinationor(Collection<Condition> conditions) Returns a newCondition.Combinationinstance, combining the given conditions using the OR conjunction.string(EntityDefinition definition) Returns a string representing this condition, e.g.List<?> values()
-
Method Details
-
entityType
EntityType entityType()- Returns:
- the entity type
-
values
List<?> values()- Returns:
- a list of the values this condition is based on, in the order they appear in the condition clause. An empty list is returned in case no values are specified.
-
columns
- Returns:
- a list of the columns this condition is based on, in the same order as their respective values appear in the condition clause. An empty list is returned in case no values are specified.
-
string
Returns a string representing this condition, e.g. "column = ?" or "col1 is not null and col2 in (?, ?)".- Parameters:
definition- the entity definition- Returns:
- a condition string
-
all
- Parameters:
entityType- the entity type- Returns:
- a Condition specifying all entities of the given type
-
key
Creates aConditionbased on the given key- Parameters:
key- the key- Returns:
- a condition based on the given key
-
keys
Creates aConditionbased on the given keys.- Parameters:
keys- the keys- Returns:
- a condition based on the given keys
- Throws:
IllegalArgumentException- in casekeysis empty or if it contains keys from multiple entity types
-
and
Returns a newCondition.Combinationinstance, combining the given conditions using the AND conjunction.- Parameters:
conditions- the conditions to combine- Returns:
- a new conditions combination
-
and
Returns a newCondition.Combinationinstance, combining the given conditions using the AND conjunction.- Parameters:
conditions- the conditions to combine- Returns:
- a new conditions combination
-
or
Returns a newCondition.Combinationinstance, combining the given conditions using the OR conjunction.- Parameters:
conditions- the conditions to combine- Returns:
- a new conditions combination
-
or
Returns a newCondition.Combinationinstance, combining the given conditions using the OR conjunction.- Parameters:
conditions- the conditions to combine- Returns:
- a new conditions combination
-
combination
Initializes a newCondition.Combinationinstance- Parameters:
conjunction- the Conjunction to useconditions- the conditions to combine- Returns:
- a new
Condition.Combinationinstance - Throws:
IllegalArgumentException- in caseconditionsis empty
-
combination
Initializes a newCondition.Combinationinstance- Parameters:
conjunction- the Conjunction to useconditions- the conditions to combine- Returns:
- a new
Condition.Combinationinstance - Throws:
IllegalArgumentException- in caseconditionsis empty
-