Junction
public
abstract
@interface
Junction
implements
Annotation
| 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.
See also:
Summary
Public methods | |
|---|---|
String
|
entityColumn()
The junction column that will be used to match against the |
String
|
parentColumn()
The junction column that will be used to match against the |
Class<?>
|
value()
An entity or database view to be used as a junction table when fetching the relating entities. |
Inherited methods | |
|---|---|
Public methods
entityColumn
public String entityColumn ()
The junction column that will be used to match against the Relation.entityColumn().
If not specified it defaults to Relation.entityColumn().
| Returns | |
|---|---|
String |
|
parentColumn
public String parentColumn ()
The junction column that will be used to match against the Relation.parentColumn().
If not specified it defaults to Relation.parentColumn().
| Returns | |
|---|---|
String |
|
value
public Class<?> value ()
An entity or database view to be used as a junction table when fetching the relating entities.
| Returns | |
|---|---|
Class<?> |
The entity or database view to be used as a junction table. |