Junction
@Target([]) class Junction
androidx.room.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 {
int pId;
int sId;
}
public class PlaylistWithSongs {
@Embedded
Playlist playlist;
@Relation(
parentColumn = "playlistId",
entity = Song.class,
entityColumn = "songId",
associateBy = @Junction(
value = PlaylistSongXRef.class,
parentColumn = "pId",
entityColumn = "sId)
)
List<String> songs;
}
@Dao
public interface MusicDao {
@Query("SELECT * FROM Playlist")
List<PlaylistWithSongs> getAllPlaylistsWithSongs();
}
In the above example the many-to-many relationship between Song
and Playlist
has an associative table defined by the entity PlaylistSongXRef
.
Summary
Public constructors |
|
---|---|
Declares a junction to be used for joining a relationship. |
Properties |
|
---|---|
String |
The junction column that will be used to match against the |
String |
The junction column that will be used to match against the |
KClass<*> |
An entity or database view to be used as a junction table when fetching the relating entities. |
Public constructors
<init>
Junction(value: KClass<*>, parentColumn: String, entityColumn: String)
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 {
int pId;
int sId;
}
public class PlaylistWithSongs {
@Embedded
Playlist playlist;
@Relation(
parentColumn = "playlistId",
entity = Song.class,
entityColumn = "songId",
associateBy = @Junction(
value = PlaylistSongXRef.class,
parentColumn = "pId",
entityColumn = "sId)
)
List<String> songs;
}
@Dao
public interface MusicDao {
@Query("SELECT * FROM Playlist")
List<PlaylistWithSongs> getAllPlaylistsWithSongs();
}
In the above example the many-to-many relationship between Song
and Playlist
has an associative table defined by the entity PlaylistSongXRef
.
See Also
Properties
entityColumn
val entityColumn: String
The junction column that will be used to match against the Relation#entityColumn()
.
If not specified it defaults to Relation#entityColumn()
.
parentColumn
val parentColumn: String
The junction column that will be used to match against the Relation#parentColumn()
.
If not specified it defaults to Relation#parentColumn()
.