Java SQLiteConstraintException:如何映射;“没有关系”;房间里有外键
我使用Android Room持久性库作为ORM 我拥有以下实体:Java SQLiteConstraintException:如何映射;“没有关系”;房间里有外键,java,android,orm,foreign-keys,android-room,Java,Android,Orm,Foreign Keys,Android Room,我使用Android Room持久性库作为ORM 我拥有以下实体: @Entity(tableName = "log_entries", foreignKeys = { @ForeignKey( entity = Serving.class, parentColumns = "id", childColum
@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
与消息
外键约束失败
那么,如何表达日志条目在房间中没有服务的事实呢?您需要使用
Long
作为数据类型,并将null
作为servingId
插入实体
// ...
LogEntry logEntry = new LogEntry();
logEntry.setServingId(null);
// ...
db.logEntryDao().add(logEntry);
在我自己找到解决方案后,我发布了这个问题。我希望它也能对其他人有所帮助,这就是为什么我这样问的原因。请看这里:
// ...
LogEntry logEntry = new LogEntry();
logEntry.setServingId(null);
// ...
db.logEntryDao().add(logEntry);