Module is.codion.framework.domain
Interface ForeignKeyConditionFactory
- All Known Subinterfaces:
ForeignKey
A ForeignKey based condition for filtering entities by their relationships.
ForeignKeyConditions enable querying entities based on their references to other entities. They provide type-safe filtering using entity instances or collections of entities, automatically handling primary key extraction and null value cases.
Foreign key conditions are typically created through the ForeignKey.Factory interface, which all ForeignKey instances implement:
// Find albums by specific artist
Entity aliceInChains = connection.selectSingle(
Artist.NAME.equalTo("Alice In Chains"));
List<Entity> aliceInChainsAlbums = connection.select(
Album.ARTIST_FK.equalTo(aliceInChains));
// Find tracks by genre
Entity metalGenre = connection.selectSingle(
Genre.NAME.equalToIgnoreCase("metal"));
List<Entity> metalTracks = connection.select(
Track.GENRE_FK.equalTo(metalGenre));
// Find albums by multiple artists
List<Entity> selectedArtists = connection.select(
Artist.NAME.like("The %"));
List<Entity> albumsByTheArtists = connection.select(
Album.ARTIST_FK.in(selectedArtists));
// Find tracks not in classical playlist
Long classicalPlaylistId = 1L;
List<Entity> nonClassicalTracks = connection.select(
Track.NOT_IN_PLAYLIST.get(Playlist.ID, classicalPlaylistId));
// Find albums without an artist (orphaned albums)
List<Entity> orphanedAlbums = connection.select(
Album.ARTIST_FK.isNull());
// Find tracks with a genre assigned
List<Entity> categorizedTracks = connection.select(
Track.GENRE_FK.isNotNull());
// Complex query with foreign key conditions
List<Entity> complexQuery = connection.select(and(
Album.ARTIST_FK.in(popularArtists),
Album.ARTIST_FK.notEqualTo(excludedArtist)));
// Using with Select builder for more control
List<Entity> detailedQuery = connection.select(
Select.where(Track.GENRE_FK.equalTo(rockGenre))
.attributes(Track.NAME, Track.ALBUM_FK)
.orderBy(ascending(Track.NAME))
.build());
// Foreign key conditions with null handling
List<Entity> albumsWithOrWithoutArtist = connection.select(or(
Album.ARTIST_FK.equalTo(specificArtist),
Album.ARTIST_FK.isNull()));
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionReturns a 'equalTo'Conditionor 'isNull' in casevalueis null.static ForeignKeyConditionFactoryfactory(ForeignKey foreignKey) Instantiates a newForeignKeyConditionFactoryinstanceReturns an 'in'Condition.in(Collection<Entity> values) Returns an 'in'Condition.Returns a 'isNotNull'Condition.isNull()Returns a 'isNull'Condition.notEqualTo(@Nullable Entity value) Returns a 'notEqualTo'Conditionor 'isNotNull' in casevalueis null.Returns a 'notIn'Condition.notIn(Collection<Entity> values) Returns a 'notIn' condition.
-
Method Details
-
equalTo
Returns a 'equalTo'Conditionor 'isNull' in casevalueis null.- Parameters:
value- the value to use in the condition- Returns:
- a
Condition
-
notEqualTo
Returns a 'notEqualTo'Conditionor 'isNotNull' in casevalueis null.- Parameters:
value- the value to use in the condition- Returns:
- a
Condition
-
in
Returns an 'in'Condition.- Parameters:
values- the values to use in the condition- Returns:
- a
Condition - Throws:
NullPointerException- in casevaluesis null
-
notIn
Returns a 'notIn'Condition.- Parameters:
values- the values to use in the condition- Returns:
- a
Condition - Throws:
NullPointerException- in casevaluesis null
-
in
Returns an 'in'Condition.- Parameters:
values- the values to use in the condition- Returns:
- a
Condition - Throws:
NullPointerException- in casevaluesis null
-
notIn
Returns a 'notIn' condition.- Parameters:
values- the values to use in the condition- Returns:
- a
Condition - Throws:
IllegalArgumentException- in casevaluesis null
-
isNull
Condition isNull()Returns a 'isNull'Condition.- Returns:
- a
Condition
-
isNotNull
Condition isNotNull()Returns a 'isNotNull'Condition.- Returns:
- a
Condition
-
factory
Instantiates a newForeignKeyConditionFactoryinstance- Parameters:
foreignKey- the foreign key- Returns:
- a new
ForeignKeyConditionFactoryinstance
-