0

I'm new on android and want to use Room for my database, but there is one error I couldn't solve after many search on the web.

Goods.java

package ir.mhn.nhamrahtop.db;

import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;

@Entity (tableName = "goodstbl")
public class Goods {

    @PrimaryKey
    @NonNull
  public String goodsId;

}

GoodsDao.java

package ir.mhn.nhamrahtop.db;

import androidx.room.Dao;
import androidx.room.Insert;

@Dao
public interface GoodsDao {
    @Insert
   public   void insert(Goods goods);
}

TopDatabase.java

package ir.mhn.nhamrahtop.db;


import androidx.room.Database;
import androidx.room.RoomDatabase;

@Database(entities = {Goods.class}, version = 1)

public abstract class TopDatabase extends RoomDatabase {
    public abstract GoodsDao goodsDao();
}

MainActivity.java

package ir.mhn.nhamrahtop;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import ir.mhn.nhamrahtop.db.Goods;
import ir.mhn.nhamrahtop.db.GoodsDao;
import ir.mhn.nhamrahtop.db.TopDatabase;


public class MainActivity extends AppCompatActivity {

    public static TopDatabase database;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        database=Room.databaseBuilder(getApplicationContext(),TopDatabase.class,"dbgoods")
        .allowMainThreadQueries()
        .build();
         
        Goods goods1=new Goods();
        goods1.goodsId="123";
        GoodsDao goodsDao=database.goodsDao();
        goodsDao.insert(goods1);
    }

I deleted some unrelated code block here. my app crash on load MainActivity, but after delete only "goodsDao.insert(goods1)" line, everything is good. what's wrong with my code!? (sorry if my english is poor) thanks in advance

1 Answers1

0

from this :

https://stackoverflow.com/a/64461346/15230839

I added (onConflict = OnConflictStrategy.REPLACE) to @Insert ,and problem was solved.