2017-06-25 16 views
0

Feedの主キーで項目のリストにアクセスしようとしています。主キーはURLです。このようにアクセスしようとするとnullが返され、:arg0を引用符で囲むと、コンパイル時エラーerror: Unused parameter: arg0が生成されます。このクエリにURLを使用することは可能ですか?URLがパラメータとして何も返されないAndroidルーム

@Query("SELECT * FROM item WHERE feed_url = :arg0") 
fun observeAllByFeed(feedUrl: String): LiveData<List<Item>> 

項目

@Entity(foreignKeys = arrayOf(ForeignKey(
     entity = Feed::class, 
     parentColumns = arrayOf("url"), 
     childColumns = arrayOf("feed_url")))) 
data class Item(
     @ColumnInfo(name = "guid") @PrimaryKey var guid: String = "", 
     @ColumnInfo(name = "categoryIds") var categoryIds: List<Int> = emptyList(), 
     @ColumnInfo(name = "comments") var comments: String? = null, 
     @ColumnInfo(name = "content") var content: String? = null, 
     @ColumnInfo(name = "description") var description: String = "", 
     @ColumnInfo(name = "author") var author: String = "", 
     @ColumnInfo(name = "block") var block: Boolean = false, 
     @ColumnInfo(name = "duration") var duration: Int = 0, 
     @ColumnInfo(name = "explicit") var explicit: String = "", 
     @ColumnInfo(name = "image_url") var imageUrl: String = "", 
     @ColumnInfo(name = "keywords") var keywords: List<String> = emptyList(), 
     @ColumnInfo(name = "subtitle") var subTitle: String = "", 
     @ColumnInfo(name = "summary") var summary: String = "", 
     @ColumnInfo(name = "link") var link: String = "", 
     @ColumnInfo(name = "publication_date") var pubDate: Date = Date(), 
     @ColumnInfo(name = "title") var title: String = "", 
     @ColumnInfo(name = "feed_url") var feedURL: String = "", 
     @ColumnInfo(name = "download_state") var downloadState: Int = Item.DownloadState.STATE_NOT_DOWNLOADED 
) : Serializable { 
    companion object DownloadState { 
     val STATE_NOT_DOWNLOADED = 0 
     val STATE_DOWNLOADING = 1 
     val STATE_DOWNLOADED = 2 
    } 
} 

フィード

@Entity(foreignKeys = arrayOf(ForeignKey(
     entity = Owner::class, 
     parentColumns = arrayOf("id"), 
     childColumns = arrayOf("owner_id") 
))) 
data class Feed(
     @ColumnInfo(name = "url") @PrimaryKey var URL: String = "", 
     @ColumnInfo(name = "copyright") var copyright: String? = null, 
     @ColumnInfo(name = "description") var description: String? = null, 
     @ColumnInfo(name = "itemGUIDs") var itemGUIDs: List<String> = emptyList(), 
     @ColumnInfo(name = "author") var author: String? = null, 
     @ColumnInfo(name = "block") var block: Boolean = false, 
     @ColumnInfo(name = "categoryIds") var categoryIds: List<Int> = emptyList(), 
     @ColumnInfo(name = "explicit") var explicit: Boolean = false, 
     @ColumnInfo(name = "image_url") var imageUrl: String? = null, 
     @ColumnInfo(name = "owner_id") var ownerId: Int = -1, 
     @ColumnInfo(name = "subtitle") var subtitle: String? = null, 
     @ColumnInfo(name = "summary") var summary: String? = null, 
     @ColumnInfo(name = "language") var language: String = "", 
     @ColumnInfo(name = "link") var link: String = "", 
     @ColumnInfo(name = "title") var title: String = "", 
     @ColumnInfo(name = "expiry") var expiry: Date = Date(), 
     @ColumnInfo(name = "subscribed") var subscribed: Boolean = false 
) : Serializable 

所有者

@Entity 
data class Owner(
     @ColumnInfo(name = "name") var name: String? = null, 
     @ColumnInfo(name = "email") var email: String? = null 
) : Serializable { 
    @ColumnInfo(name = "id") 
    @PrimaryKey(autoGenerate = true) 
    var id: Int = 0 
} 

答えて

0

それは部屋でLiveDataを使用した場合、それはすぐに戻りますので、を呼び出すことが判明は即座にnullを返しますが、Observersに提供する実際のデータを非同期に取得するため、LiveData以外の呼び出しから変換しようとすると置換のドロップとして使用できません。これはここに記載されています:https://developer.android.com/reference/android/arch/lifecycle/LiveData.html#getValue()

現在の値を返します。バックグラウンドスレッドでこのメソッドを呼び出すことは、最新の値セットが受け取られることを保証しないことに注意してください。

関連する問題