使用SORM通过纯SQL查询获取对象

时间:2012-11-23 10:38:08

标签: scala sorm

是否可以通过纯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]

2 个答案:

答案 0 :(得分:7)

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

以下是如何实施的:

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

如果此问题在此处得到显着支持,或者更好,here,则可能会在下一个次要版本中实施。

<强>更新

在0.3.1中实施

答案 1 :(得分:0)

如果您只想获取一个对象(通过2个或更多参数),则可以 还要做以下事情:

使用Sorm Querier

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()