目前,我有Contact
类,看起来像
package com.example.courseproject;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity(tableName = "contact_table")
public class Contact {
@PrimaryKey(autoGenerate = true)
private int id;
private String firstName;
private String lastName;
private Map<String, List<String>> contacts; //Type, Values. Example { "email": {"email_1", "email_2"}}
public Contact(String firstName, String lastName, Map<String, List<String>> contacts) {
this.firstName = firstName;
this.lastName = lastName;
this.contacts = contacts;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public Map<String, List<String>> getContacts() {
return contacts;
}
}
并在第20行(地图声明)上显示
...\Contact.java:20: error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
private Map<String, List<String>> contacts; //Type, Values. Example { "email": {"email_1", "email_2"}}
想法是制作一个电话簿,该电话簿可以(当然)存储多个“人”,每个人可以有不同的联系方式(以及数量不同)。
使用地图可以吗?如果可以的话,我可以简单地使用JSON lib吗?如果没有,您会提出什么建议?
据我所知,“联系人”字段和“联系人”之间应该存在多对多关系的“表”。我真的很喜欢JSON的想法,因为它简单快捷,但是我知道这不是最好的解决方案。
答案 0 :(得分:1)
您不能将Map用作要存储在数据库中的变量。 不设置ID-Room会自动为您生成ID。作为Android Studio的提示说 您可以将TypeConverter用于地图: Room TypeConverter for map