Ich benutze Room Database, versuche eine Abfrage in meinem Dao zu schreiben, die alle Datensätze löscht, die älter als eine bestimmte Anzahl von Tagen sind. Hier ist, was ich komme zu:Android Room Database Fehler: Ungenutzter Parameter: Tage in @Query Funktion
@Query("DELETE FROM my_table WHERE dateFrom <= date('now','-:days day')")
fun deleteAllOlderThan(days: Int)
aber wenn ich versuche, mein Projekt zu erstellen, erhalte ich einen Fehler in meiner Gradle Console:
error: Unused parameter: days
ich Kotlin verwende, so ist es mir zeigen auch diese :
Error:Execution failed for task ':nexo:kaptDebugKotlin'. Internal compiler error. See log for more details
Was ist falsch mit meiner Abfrage?
UPDATE
ich auch bin immer eine Fehlermeldung über Datum konvertieren. Hier ist mein Konverter:
class Converter {
@TypeConverter
fun fromTimestamp(value: Long?) = value?.let { Date(it) }
@TypeConverter
fun dateToTimestamp(date: Date?) = date?.time
}
ich auch zu meiner Datenbank mit Anmerkung hinzufügen:
@TypeConverters(Converter::class)
Hier spezifische Fehler i erhalten:
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;
ZUSAMMENFASSUNG
Ich habe versucht, Converter mit versiegelter Klasse zu verwenden, was in Room Probleme verursacht, also entschied ich mich, meinen Date-Parameter als Long zu behalten.
Überprüfen Sie Emmanuel S Antwort. Es sollte sein:
@Query("DELETE FROM my_table WHERE dateFrom <= date('now', '-' || :days || ' days')") fun deleteAllOlderThan(days: Int)
Ich vermute, dass Sie nicht ': days' innerhalb einer Zeichenfolge in Anführungszeichen verwenden können. All Room macht gerade um SQLite-Platzhalter herum. Versuchen Sie die Verkettung von Strings. – CommonsWare
Danke, ich werde das versuchen, sehe auch mein Update, wenn du willst, ich habe kein anderes Problem bemerkt – Konrad
poste deine Datenbank Klasse .. :-) –