我使用android房间持久性库作为orm。
我有以下实体:
@Entity(tableName = "log_entries",
foreignKeys = {
@ForeignKey(
entity = Serving.class,
parentColumns = "id",
childColumns = "foodId",
onDelete = ForeignKey.CASCADE
)
}
)
public class LogEntry {
@PrimaryKey(autoGenerate = true)
private long id;
private long servingId;
// ...
}
有些日志项有服务,有些则没有。添加日志项
它有一个服务可以正常工作,但是添加一个id=0来表示“没有关系”会导致
SQLiteConstraintException
带有消息外键约束失败
// ...
LogEntry logEntry = new LogEntry();
logEntry.setServingId(0);
// ...
db.logEntryDao().add(logEntry);
那么,我该如何表达这样一个事实:一个日志条目在房间里没有服务?
最佳答案
您需要使用Long
作为数据类型,并插入null
作为servingId
的实体。
// ...
LogEntry logEntry = new LogEntry();
logEntry.setServingId(null);
// ...
db.logEntryDao().add(logEntry);