无法获得空间返回fts4表的“rowid”字段在sqlite3命令行中运行良好

fnvucqvd  于 2021-07-11  发布在  Java
关注(0)|答案(0)|浏览(166)

因此,我已经完成了创建fts4表的步骤(我在获取空间方面遇到了问题,所以我在sqlite中创建了fts4表并将其导入到项目中)。
但是,每当我试图查询数据库时expected:... actual:...“错误。错误如下:

TableInfo{name='citiesFts', columns={city=Column{name='city', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, city_ascii=Column{name='city_ascii', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, rowid=Column{name='rowid', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}}, foreignKeys=[], indices=[]}
     Found:
    TableInfo{name='citiesFts', columns={city=Column{name='city', type='', affinity='1', notNull=false, primaryKeyPosition=0, defaultValue='null'}, city_ascii=Column{name='city_ascii', type='', affinity='1', notNull=false, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}

在“found”字段中,“rowid”字段没有显示,尽管我请求了它。
这是导致错误的查询(位于我的fts dao中):

@Transaction
@Query(
        "SELECT city, city_ascii, rowid FROM citiesFts WHERE city MATCH :city;")
List<CityFTS4> searchByCityName(String city);

这正是在sqlite3命令行中运行时,可以正常工作并返回rowid列的查询。
这是我的cityfts课程:

@Fts4(contentEntity = City.class)
@Entity(tableName = "citiesFts")
public class CityFTS4 {
    @PrimaryKey
    @ColumnInfo(name = "rowid")
    public int id;
    @ColumnInfo(name = "city")
    private final String cityName;
    @ColumnInfo(name = "city_ascii")
    private final String cityASCII;

    public CityFTS4( int id, String cityName, String cityASCII){
        this.cityName = cityName;
        this.cityASCII = cityASCII;
    }

    public String getCityName() {
        return cityName;
    }

    public String getCityASCII() {
        return cityASCII;
    }

最后,这是citiesfts表的模式:

CREATE VIRTUAL TABLE 'citiesFts' USING FTS4('id', 'city', 'state_name', 'state_id', content='cities')
/* citiesFts(id,city,state_name,state_id) */;

任何帮助都将不胜感激。
我可以在我的'cityfts4'类中省略rowid字段,因为android开发人员文档声明主键字段是可选的,但是每当我试图忽略它时,就会出现一个错误。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题