Je suis tombé sur une salle tutoriel qui utilise l'annotation @PrimaryKey
Sur la définition de classe:
@Entity(foreignKeys = @ForeignKey(entity = User.class,
parentColumns = "id",
childColumns = "userId",
onDelete = CASCADE))
public class Repo {
...
}
Maintenant, j'ai la classe de données suivante qui souhaite utiliser une clé primaire:
@Parcel(Parcel.Serialization.BEAN)
data class Foo @ParcelConstructor constructor(var stringOne: String,
var stringTwo: String,
var stringThree: String): BaseFoo() {
...
}
Donc, je viens d'ajouter l'extrait @Entity(tableName = "Foo", foreignKeys = @ForeignKey(entity = Bar::class, parentColumns = "someCol", childColumns = "someOtherCol", onDelete = CASCADE))
en haut également, mais je ne peux pas compiler:
Une annotation ne peut pas être utilisée comme argument d'annotations.
Je me demande: comment se fait-il (ce que je pense est) le même concept fonctionnant dans Java mais pas dans Kotlin? Aussi , existe-t-il un moyen de contourner cela?
Toute contribution est la bienvenue.
C'est la façon de fournir l'annotation que vous recherchez, avec des tableaux explicites pour les arguments, et pas de @
pour la création de l'annotation imbriquée:
@Entity(tableName = "Foo",
foreignKeys = arrayOf(
ForeignKey(entity = Bar::class,
parentColumns = arrayOf("someCol"),
childColumns = arrayOf("someOtherCol"),
onDelete = CASCADE)))
Depuis Kotlin 1.2 , vous pouvez également utiliser des littéraux de tableau:
@Entity(tableName = "Foo",
foreignKeys = [
ForeignKey(entity = Bar::class,
parentColumns = ["someCol"],
childColumns = ["someOtherCol"],
onDelete = CASCADE)])