java - 错误: If a primary key is annotated with autoGenerate,其类型必须是int、Integer、long或Long

标签 java android database android-studio android-room

我尝试创建一个整数 id 作为主键,然后它要求我创建 getter 和 setter 方法,然后它希望我动态设置 id,但我不想在我的应用程序中添加 id 字段,如果我必须自己设置id autoGenerate 有什么用?

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;

@Entity(tableName = "messages")
public class Message {

@PrimaryKey(autoGenerate = true)


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

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

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

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

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

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getTimeHour() {
    return timeHour;
}

public void setTimeHour(String timeHour) {
    this.timeHour = timeHour;
}

public String getTimeMinute() {
    return timeMinute;
}

public void setTimeMinute(String timeMinute) {
    this.timeMinute = timeMinute;
}

public String getContactName() {
    return contactName;
}

public void setContactName(String contactName) {
    this.contactName = contactName;
}

public String getText() {
    return text;
}

public void setText(String text) {
    this.text = text;
}
}

这是什么意思以及如何解决?

最佳答案

每个 @Entity 必须至少有一个主键。

@PrimaryKey(autoGenerate = true)

您应该将此用作

@PrimaryKey(autoGenerate = true) 私有(private) int id;

此外,您应该为该 id 变量设置一个 setter,这样当 Room 需要设置主键值时,它将使用您的 setter 方法,因为您的 id 变量是私有(private)的。所以,现在在这种情况下你根本不需要设置 id。房间会处理的。

关于java - 错误: If a primary key is annotated with autoGenerate,其类型必须是int、Integer、long或Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53517905/

相关文章:

java - 如何通用设置属性配置?

java - ANR 中的小部件更新结果

mysql - 远程数据库访问主机 - 通配符

.net - 将文件上传到数据库的最佳实践

java - 让 Install4j 安装程序显示 --version 信息

java - 将文件的一部分用于文件[输入/输出]流

java - 如何将下面的示例转换为实现 Runnable 接口(interface)并重写 run 方法

android - 如何查看联系人详细 Activity

android - 从 facebook 注销按钮捕获注销操作 - facebook-android-sdk :4. 0.0

SQL 日期查询 - 此条件成立多长时间