Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLiteConstraintException:如何映射;“没有关系”;房间里有外键_Java_Android_Orm_Foreign Keys_Android Room - Fatal编程技术网

Java SQLiteConstraintException:如何映射;“没有关系”;房间里有外键

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

我使用Android Room持久性库作为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
与消息

外键约束失败


那么,如何表达日志条目在房间中没有服务的事实呢?

您需要使用
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);