Комната не может найти логическую колонку, когда она существует - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь построить Дао, используя сущность с логическим значением, комната продолжает говорить, что столбец не существует, даже когда он существует.

Device.kt

@Entity(tableName = "device_table")
data class Device(
    @Expose
    @SerializedName("name")
    var name: String,
    @Expose
    @SerializedName("strength")
    var strength: Int,
    @Expose
    @ColumnInfo(name = "pk")
    @SerializedName("address")
    @PrimaryKey(autoGenerate = false)
    var address: String,
    @Expose
    @ColumnInfo(name = "created_at")
    @SerializedName("created_at")
    var createdAt: String,
    var synchronized: Boolean
) {
    constructor() : this("", 0, "", "", true)
}

DeviceDao.kt

@Dao
interface DeviceDao {
    /**
     * Inserts a device into the database, if it already exists
     * the device gets updated with the device data.
     */
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insertOrUpdate(device: Device)

    /**
     * Retrieves all the bluetooth devices from the
     * local database ordered by their creation date.
     */
    @Query("SELECT * FROM device_table ORDER BY created_at ASC")
    fun read(): LiveData<List<Device>>

    @Query("SELECT * FROM device_table WHERE synchronized = 0 ORDER BY created_at ASC")
    fun readUnSync(): List<Device>

    /**
     * Nukes the device_table, deletes everything.
     */
    @Query("DELETE FROM device_table")
    fun deleteAll()
}

Комната, использующая завершение SQL с помощью Android Studio, находит синхронизированный столбец очень хорошо, но когда я пытаюсь запустить приложение, появляется следующее:

There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: synchronized)

public abstract java.util.List<me.alfredobejarano.bluethootmanager.data.Device> readUnSync();

Столбец существует, я не знаю, что происходит, я даже использую логическое значение в качестве Int, потому что SQLite не имеет логических значений

1 Ответ

0 голосов
/ 07 ноября 2018

вам не хватает аннотации @ColumnInfo(name = "synchronized") ...

при использовании ключевых слов Java & SQL в качестве имен столбцов, как правило, сбивает с толку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...