2017-11-23 4 views
0

私はAndroidルームライブラリを使用しています。私はエンティティ製品を持っています:ルームエラー - 対処方法?

@Entity(tableName = "products", foreignKeys = @ForeignKey(
     entity = Category.class, 
     parentColumns = "code", 
     childColumns = "category_id")) 
public class Product { 

    @PrimaryKey(autoGenerate = true) 
    private Long id; 

    @ColumnInfo(name = "name") 
    private String name; 

    @ColumnInfo(name = "description") 
    private String description; 

    @ColumnInfo(name = "category_id") 
    private String categoryId; 

と第2エンティティ私は製品の挿入リストしようとすると

@Entity(tableName = "categories") 
public class Category { 

    @PrimaryKey 
    @NonNull 
    private String code; 

    @ColumnInfo(name = "name") 
    private String name; 

    @Ignore 
    private List<Product> products; 

は:

new AsyncTask<Void, Void, Void>() { 
      @Override 
      protected Void doInBackground(Void... voids) { 
       MyApplication.get().getDB().productDao().insertAll(productList); 
       return null; 
      } 
     }.execute(); 

を私はDBしようインサート製品エラーが発生します。

どうすれば修正できますか?

+0

https://stackoverflow.com/questions/44633483/android-room-foreign-key-constraint-failed –

+0

@kamal vermaは重複した場所ですか?私は文字列UUIDや他の種類の松葉杖を使用したくない – ip696

+0

同じエラーhttps://stackoverflow.com/questions/44633483/android-room-foreign-key-constraint-failed –

答えて

0

これはに一対多所有関係を定義するCategoryクラスの@Ignore注釈と関連している可能性があります。

@Ignore注釈を削除するとどうなるか試してみてください。それでも問題が解決しない場合は、@Relation注釈を使用して1対多の関係を定義することもできます。 (出典:this SO answer

関連する問題