Junction

@Target(allowedTargets = )
@Retention(value = AnnotationRetention.BINARY)
public annotation Junction


Declares a junction to be used for joining a relationship.

If a Relation should use an associative table (also know as junction table or join table) then you can use this annotation to reference such table. This is useful for fetching many-to-many relations.

@Entity(primaryKeys = {"pId", "sId"})
public class PlaylistSongXRef {
val pId: Int,
val sId: Int
}
public class PlaylistWithSongs {
@Embedded
val playlist: Playlist
@Relation(
parentColumn = "playlistId",
entity = Song::class,
entityColumn = "songId",
associateBy = Junction(
value = PlaylistSongXRef::class,
parentColumn = "pId",
entityColumn = "sId")
)
val songs: List<String>
}

@Dao
public interface MusicDao {
@Query("SELECT * FROM Playlist")
val getAllPlaylistsWithSongs(): List<PlaylistWithSongs>
}

In the above example the many-to-many relationship between a Song and a Playlist has an associative table defined by the entity PlaylistSongXRef.

See also
Relation

Summary

Public constructors

Junction(
    @NonNull KClass<@NonNull ?> value,
    @NonNull String parentColumn,
    @NonNull String entityColumn
)

Public methods

final @NonNull String

The junction column that will be used to match against the Relation.entityColumn.

final @NonNull String

The junction column that will be used to match against the Relation.parentColumn.

final @NonNull KClass<@NonNull ?>

An entity or database view to be used as a junction table when fetching the relating entities.

Public constructors

Junction

public Junction(
    @NonNull KClass<@NonNull ?> value,
    @NonNull String parentColumn,
    @NonNull String entityColumn
)

Public methods

getEntityColumn

public final @NonNull String getEntityColumn()

The junction column that will be used to match against the Relation.entityColumn.

If not specified it defaults to Relation.entityColumn.

getParentColumn

public final @NonNull String getParentColumn()

The junction column that will be used to match against the Relation.parentColumn.

If not specified it defaults to Relation.parentColumn.

getValue

public final @NonNull KClass<@NonNull ?> getValue()

An entity or database view to be used as a junction table when fetching the relating entities.

Returns
@NonNull KClass<@NonNull ?>

The entity or database view to be used as a junction table.