[解決済み] フィールドのセッターが見つからない - KotlinとRoomデータベースを使用した場合
2023-04-02 20:29:55
質問
私はRoom persistence libraryと統合しています。私はKotlinで次のようなデータクラスを持っています。
@Entity(tableName = "story")
data class Story (
@PrimaryKey val id: Long,
val by: String,
val descendants: Int,
val score: Int,
val time: Long,
val title: String,
val type: String,
val url: String
)
は
@Entity
と
@PrimaryKey
のアノテーションは、Room ライブラリ用です。ビルドしようとすると、エラーで失敗します。
Error:Cannot find setter for field.
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
また、デフォルトのコンストラクタを用意してみました。
@Entity(tableName = "story")
data class Story (
@PrimaryKey val id: Long,
val by: String,
val descendants: Int,
val score: Int,
val time: Long,
val title: String,
val type: String,
val url: String
) {
constructor() : this(0, "", 0, 0, 0, "", "", "")
}
しかし、これではうまくいきません。注意すべき点は、このKotlinクラスをゲッターとセッターを持つJavaクラスに変換すると動作することです。どんな助けでも感謝します!
どうすれば解決するのでしょうか?
あなたのフィールドには
val
でマークされているので、それらは事実上finalであり、セッターフィールドを持ちません。
を入れ替えてみてください。
val
を
var
.
また、フィールドを初期化する必要があるかもしれません。
@Entity(tableName = "story")
data class Story (
@PrimaryKey var id: Long? = null,
var by: String = "",
var descendants: Int = 0,
var score: Int = 0,
var time: Long = 0L,
var title: String = "",
var type: String = "",
var url: String = ""
)
EDIT
上記の解決策は、KotlinをHibernateのような他のJavaライブラリと一緒に使用したときにKotlinでこのエラーが発生した場合の一般的な修正方法です。もしあなたがRoomで不変性を維持したいのであれば、あなたのケースにもっと特化した他の答えを参照してください。
Java ライブラリによる不変性がまったく機能しない場合があり、悲しい開発者の声を聞きながら、そのような場合は
val
を
var
残念ながら
関連
-
[解決済み] Android Room - シンプルな select クエリ - メインスレッドでデータベースにアクセスできません。
-
[解決済み] HttpPostによる画像送信
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] EditTextの右側のDrawableにonClickListenerを設定する [重複] [重複
-
[解決済み] キャンバスに複数行のテキストを描画する
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?
-
[解決済み] Google Play ストア内部テストのロールアウトが開始できない
-
[解決済み] WhatsAppでメッセージを送信する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Room Persistence libで主キーをautoincrementにする方法
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?