我已经使用 SQLDelight 几天了,在最初的喜悦之后,我偶然发现了一个谜团 - 如何定义查询返回类型?
例如,如果我有一张桌子
CREATE TABLE LocationEntity (id INTEGER, name TEXT NOT NULL, description TEXT);
如果我这样做
getAll:
SELECT * FROM LocationEntity
SqlDelight 将返回 LocationEntity 对象的列表,这很棒。
但是如果我有投影选择,就像这样:
getAll:
SELECT id, name FROM LocationEntity
SQLDelight 生成一个新类型 GetAll。我怎样才能告诉它使用我的对象 ShortLocation(id: Long, name: String) 来代替?
我在这里缺少什么?
它甚至可以完成吗,或者我被许多生成的类型所困扰(几乎每个查询)?
实现此目的的一种方法是将
ShortLocation
定义为 SQL 中的 VIEW
CREATE VIEW ShortLocation AS
SELECT id, name FROM LocationEntity
那么您的查询可以是
getAll:
SELECT * FROM ShortLocation