Interface ColumnCondition<T>

Type Parameters:
T - the attribute type
All Superinterfaces:
Condition

public interface ColumnCondition<T> extends 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:
  • Method Details

    • column

      Column<T> 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

      static <T> ColumnCondition.Factory<T> factory(Column<T> column)
      Instantiates a new ColumnCondition.Factory instance
      Type Parameters:
      T - the column type
      Parameters:
      column - the column
      Returns:
      a new ColumnCondition.Factory instance