J'utilise Room Databse, en essayant d'écrire une requête dans mon Dao, qui va supprimer tous les enregistrements plus anciens que le nombre de jours. Voici ce que je viens:Android Room Erreur de base de données: Paramètre inutilisé: jours dans la fonction @Query
@Query("DELETE FROM my_table WHERE dateFrom <= date('now','-:days day')")
fun deleteAllOlderThan(days: Int)
Cependant, lorsque je tente de construire mon projet, je reçois une erreur dans ma Gradle Console:
error: Unused parameter: days
J'utilise Kotlin, il me montre aussi ce :
Error:Execution failed for task ':nexo:kaptDebugKotlin'. Internal compiler error. See log for more details
Quel est le problème avec ma requête?
MISE À JOUR
Je suis aussi obtenir une erreur sur la conversion de la date. Voici mon convertisseur:
class Converter {
@TypeConverter
fun fromTimestamp(value: Long?) = value?.let { Date(it) }
@TypeConverter
fun dateToTimestamp(date: Date?) = date?.time
}
Je suis également l'ajouter à ma base de données avec l'annotation:
@TypeConverters(Converter::class)
Voici erreur spécifique que je reçois:
Cannot figure out how to save this field into database. You can consider adding a type converter for it. e: e:private final java.util.Date dateFrom = null;
RÉSUMÉ
J'essayais d'utiliser Converter avec une classe scellée, ce qui cause des problèmes dans Room, donc j'ai décidé de garder mon paramètre de date comme Long.
Vérifiez la réponse d'Emmanuel S. Il devrait être:
@Query("DELETE FROM my_table WHERE dateFrom <= date('now', '-' || :days || ' days')") fun deleteAllOlderThan(days: Int)
Je suppose que vous ne pouvez pas utiliser ': days' à l'intérieur d'une chaîne entre guillemets. Tout ce que Room fait est de contourner les espaces réservés de SQLite. Essayez la concaténation de chaînes. – CommonsWare
Merci, je vais essayer, voir aussi ma mise à jour si vous voulez, je n'ai pas remarqué un autre problème – Konrad
poster votre base de données .. :-) –