【发布时间】:2019-03-09 20:16:03
【问题描述】:
目前我的 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 的想法,因为它简单快速,但我知道它不是最好的解决方案。
【问题讨论】:
标签: android dictionary many-to-many android-sqlite android-room