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. |