Module is.codion.framework.domain
Interface ColumnCondition<T>
- Type Parameters:
T
- the attribute type
- All Superinterfaces:
Condition
A condition based on a single
Column
.
ColumnConditions provide type-safe filtering for column values using various operators such as equality, comparison, pattern matching, and range operations. String conditions support case-sensitive and case-insensitive variants.
Column conditions are typically created through the Column.Factory interface, which all Column instances implement:
// Equality conditions
List<Entity> metalTracks = connection.select(
Track.GENRE_FK.equalTo(metalGenre));
List<Entity> unpriced = connection.select(
Track.UNIT_PRICE.equalTo(null)); // Becomes "IS NULL"
// String pattern matching
List<Entity> theArtists = connection.select(
Artist.NAME.like("The %"));
List<Entity> liveAlbums = connection.select(
Album.TITLE.likeIgnoreCase("%live%"));
// Comparison conditions
List<Entity> expensiveTracks = connection.select(
Track.UNIT_PRICE.greaterThan(new BigDecimal("0.99")));
List<Entity> recentTracks = connection.select(
Track.CREATED_DATE.greaterThanOrEqualTo(
LocalDateTime.now().minusDays(30)));
// Range conditions
List<Entity> mediumPricedTracks = connection.select(
Track.UNIT_PRICE.between(
new BigDecimal("0.50"),
new BigDecimal("1.50")));
// Collection-based conditions
List<String> genres = List.of("Rock", "Metal", "Blues");
List<Entity> rockishTracks = connection.select(
Track.GENRE_NAME.inIgnoreCase(genres));
List<Integer> excludedIds = List.of(1, 5, 10);
List<Entity> filteredArtists = connection.select(
Artist.ID.notIn(excludedIds));
// Null checks
List<Entity> tracksWithPrice = connection.select(
Track.UNIT_PRICE.isNotNull());
List<Entity> tracksWithoutComposer = connection.select(
Track.COMPOSER.isNull());
// Case-insensitive operations
List<Entity> beatlesAlbums = connection.select(
Album.ARTIST_NAME.equalToIgnoreCase("the beatles"));
// Complex combinations with logical operators
List<Entity> complexQuery = connection.select(and(
Track.UNIT_PRICE.greaterThan(new BigDecimal("0.99")),
Track.GENRE_NAME.inIgnoreCase("Rock", "Metal"),
Track.DURATION.lessThan(300000))); // Less than 5 minutes
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface is.codion.framework.domain.entity.condition.Condition
Condition.All, Condition.Combination
-
Method Summary
Modifier and TypeMethodDescriptionboolean
column()
static <T> ColumnCondition.Factory
<T> Instantiates a newColumnCondition.Factory
instanceoperator()
Methods inherited from interface is.codion.framework.domain.entity.condition.Condition
columns, entityType, toString, values
-
Method Details
-
column
- Returns:
- the attribute
-
operator
Operator operator()- Returns:
- the condition operator
-
caseSensitive
boolean caseSensitive()- Returns:
- true if this condition is case-sensitive, only applies to String based conditions
-
factory
Instantiates a newColumnCondition.Factory
instance- Type Parameters:
T
- the column type- Parameters:
column
- the column- Returns:
- a new
ColumnCondition.Factory
instance
-