使用 sorm 框架仅获取一个字段
Posted
技术标签:
【中文标题】使用 sorm 框架仅获取一个字段【英文标题】:Fetching only one field using sorm framework 【发布时间】:2016-08-18 13:28:01 【问题描述】:是否可以使用SORM Framework 从数据库中仅获取一个字段?
我想要的纯 SQL 是:
SELECT node_id FROM messages
我似乎无法正常地重现这一点。我知道这可能违反了 sorm 的工作方式,但现在我有两张巨大的桌子,上面有不同类型的消息。我被要求从两个表中获取所有唯一的 node_id
s。
我知道我可以使用 sorm 查询两个表并解析所有数据,但我想让数据库正常工作。显然,如果在单个 db 调用中只能获得唯一的 node_id
s,那就更好了。
现在只查询和解析所有内容,花费的时间太长了。
【问题讨论】:
【参考方案1】:似乎没有对您想要做的事情的 ORM 支持,除非 node_id
恰好是您的 Message
对象的主键:
val messages = Db.query[Message].fetchIds()
在这种情况下,您不必担心它是 UNIQUE
,因为根据定义,主键是唯一的。或者,您可以运行自定义 SQL 查询:
Db.fetchWithSql[Message]("SELECT DISTINCT node_id FROM messages")
请注意,后者可能输入错误:您必须针对您的数据库进行尝试。您可能需要 fetchWithSql[Int]
或其他一些变体:不清楚 SORM 在未查询主键的情况下会做什么。
【讨论】:
您好,感谢您的帮助。不幸的是 node_id 不是唯一的,也不是任何表的主要 id。另外我认为 SORM 的fetchWithSql
限制是它只能查询 id 列。我试过了,它给了我assertion failed: The sql-statement must select only the id-column
@MikeJones 啊,那你可能不走运了。 SORM 在这个时刻似乎是一个非常不发达的框架,遗憾的是,它缺少很多你认为显而易见的东西。除了fetchWithSql
之外,我真的在他们的来源中找不到任何暗示这是可能的东西。以上是关于使用 sorm 框架仅获取一个字段的主要内容,如果未能解决你的问题,请参考以下文章