Scala 使用SORM通过普通SQL查询获取对象
是否可以通过普通SQL查询获取项目,而不是使用DSL构建查询 例如,是否有一个API用于制作Scala 使用SORM通过普通SQL查询获取对象,scala,sorm,Scala,Sorm,是否可以通过普通SQL查询获取项目,而不是使用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
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]
由于使用集合和其他结构化值填充实体涉及以不可连接的方式从多个表中获取数据,因此直接获取数据的API很可能永远不会公开。然而,目前正在考虑解决这一问题的另一种办法 以下是它的实现方式:
val artists : Seq[Artist]
= Db.fetchWithSql[Artist]("SELECT id FROM artist WHERE name = ?", "Metallica")
如果这个问题在这里得到显著的支持,或者更好,它可能会在下一个小版本中实现
更新
在0.3.1中实现,如果只想获取一个对象(通过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()
我翻遍了他的源代码,什么也找不到。有一个JDBC类包含executeQuery方法,但我不知道如何在现有实例上使用它@多米尼克布·萨姆拉下次只需在这里问一个问题——这是一种深受鼓励的方法。SORM的设计初衷是为了不让它的内脏被拔出,所以在大多数情况下,挖掘内部API对您没有帮助。可能是select应该查询所有行(我的意思是*)?@AndreyKouznetsov我想您指的是列。不需要。SORM分两个阶段执行查询:首先,它应用所有过滤器、订单和其他子句来选择要获取的实体的匹配ID,然后它查询该实体的所有内容。使用“选择id”方法,我们可以替换第一阶段。无论如何,您已经创建了一个问题-让我们在这里讨论所有细节。实际上我现在正在那里写一封回信。