我是Android应用程序开发的新手,正在创建一个包含Trips和存储位置的应用程序。
我遇到了编译错误:“trip_Id列引用了外键,但它不是索引的一部分。每当父表被修改时,这可能触发完整的表扫描,因此您强烈建议创建涵盖此列的索引。”
我有2个表:Trip和Location。
我尝试在它们各自的类中索引tripId和locationId,但这并没有解决问题。
一个Trip有其id(PK)、标题、描述和优先级。
一个Location有其locationId(PK)、tripId(FK)、位置名称和地点的经纬度。
@Entity(tableName = "location_table",
foreignKeys = @ForeignKey(entity = Trip.class, parentColumns = "location_Id", childColumns = "trip_Id"),
indices = {@Index(value = {"locationId"}, unique = true)})
public class Location {
@PrimaryKey(autoGenerate = true)
private int locationId;
@ColumnInfo (name = "trip_Id")
private int tripId;
private String locationName;
@TypeConverters(LatLngConverter.class)
private LatLng latLng;
@Entity(tableName = "trip_table", indices = {@Index(value = {"id"}, unique = true)})
public class Trip {
@PrimaryKey(autoGenerate = true) // with each new row SQLite will automatically increment this ID so it will be unique
@ColumnInfo (name = "location_Id")
private int id;
private String title;
private String description;
private int priority;
我似乎找不出问题在哪里
@Database
注解中,你需要在实体列表中指定 **Trip.class
**。 - MikeT