Итак, моя база данных работала с одной сущностью веб-сайта
@Entity(tableName = "website_table") public class Website {
@NonNull
@PrimaryKey(autoGenerate = true)
private Integer websiteId;
private String title;
private String base_URL;
private String description;
public Website(String title, String base_URL) {
this.title = title;
this.base_URL = base_URL;
}
public void setWebsiteId(Integer websiteId) {
this.websiteId = websiteId;
}
public Integer getWebsiteId() {
return websiteId;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getBase_URL() { return base_URL; }
public void setBase_URL(String base_URL) { this.base_URL = base_URL; }
}
@Dao
public interface WebsiteDao {
@Insert
void insert(Website website);
@Update
void update(Website website);
@Delete
void delete(Website website);
@Query("DELETE FROM website_table")
void deleteAllWebsites();
@Query("SELECT * FROM website_table ORDER BY title DESC")
LiveData<List<Website>> getAllWebsites();
@Query("SELECT * FROM website_table")
public List<WebsiteWithWebPages> loadWebsitesWithWebPages();
}
Затем я попытался добавить связь для веб-страниц на веб-сайте
public class WebsiteWithWebPages {
@Embedded
public Website website;
@Relation(parentColumn = "websiteId", entityColumn = "website_Id",
entity = WebPage.class)
public List<WebPage> webPageList;
}
@Entity(tableName = "webpage_table")
public class WebPage {
@PrimaryKey(autoGenerate = true)
public Integer webPageId;
public final String name;
public final String url;
public String description;
public final Integer website_Id;
public WebPage(String name, String url, final Integer website_Id) {
this.name = name;
this.url = url;
this.website_Id = website_Id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getName() {
return name;
}
public String getUrl() {
return url;
}
public Integer getWebsiteId() {
return website_Id;
}
}
Когда я пытаюсь добавить веб-сайты, используя мойвеб-сайт Dao, например, с помощью команды
Website website= new Website("website name", "websiteurl");
websiteDao.insert(website);
Мое приложение вылетает.каждому созданному веб-сайту присваивается идентификатор 0, и ограничение FOREIGN KEY не выполняется.Что здесь не так?Я изменил primarykey с int на INTEGER, и когда я сделал это, он установил первичный ключ как null, а когда primarykey имеет значение int, он установил id в 0. Что происходит?