9

是否可以通过普通 SQL 查询而不是使用SORM通过 DSL 构建查询来获取项目?

例如,是否有一个 API 可以制作类似的东西

val metallica = Db.query[Artist].fromString("SELECT * FROM artist WHERE name = ?", "Metallica").fetchOne() // Option[Artist]

代替

val metallica = Db.query[Artist].whereEqual("name", "Metallica").fetchOne() // Option[Artist]
4

2 回答 2

7

由于使用集合和其他结构化值填充实体涉及以不可连接的方式从多个表中获取数据,因此直接获取它的 API 很可能永远不会暴露。然而,目前正在考虑解决这个问题的另一种方法。

以下是它的实现方式:

val artists : Seq[Artist] 
  = Db.fetchWithSql[Artist]("SELECT id FROM artist WHERE name = ?", "Metallica")

如果这个问题在这里得到显着的支持,或者更好的是,它可能会在下一个小版本中实现。

更新

在 0.3.1 中实施

于 2012-11-23T15:19:31.213 回答
0

如果您只想获取一个对象(通过 2 个或更多参数),您还可以执行以下操作:

通过使用 Sorm 查询器

Db.query[Artist].where(Querier.And(Querier.Equal("name", "Name"), Querier.Equal("surname", "surname"))).fetchOne()

要不就

Db.query[Artist].whereEqual("name", "Name").whereEqual( "surname","surname").fetchOne()
于 2016-04-24T16:39:17.307 回答