是否可以通过纯SQL查询获取项目,而不是使用SORM通过DSL构建查询?
例如,是否有用于制作类似内容的API
val metallica = Db.query[Artist].fromString("SELECT * FROM artist WHERE name = ?", "Metallica").fetchOne() // Option[Artist]
Run Code Online (Sandbox Code Playgroud)
代替
val metallica = Db.query[Artist].whereEqual("name", "Metallica").fetchOne() // Option[Artist]
Run Code Online (Sandbox Code Playgroud) 我正在为一个小型Scala项目寻找一个轻量级的Hibernate替代品,而SORM看起来非常有前景.目前我使用SQLite,但根据官方网站不支持.所以我的问题是有没有计划在SORM中添加SQLite支持?
我正在阅读Play Framework的视频介绍,但是由于导入失败,我无法使用SORM创建数据库对象.
我试图添加依赖项plugins.sbt,并重新启动激活器,但似乎激活器找不到依赖项,我得到了,我得到一个unresolved error:
addSbtPlugin("org.sorm-framework" % "sorm" % "0.3.14")
addSbtPlugin("com.h2database" % "h2" % "1.4.181")
Run Code Online (Sandbox Code Playgroud)
我从Yvis存储库中获得了版本.我也尝试了其他版本没有更好的运气.
我有一个带有这些依赖项的sbt项目:
libraryDependencies ++= Seq(
"org.scalatra" %% "scalatra" % ScalatraVersion,
"org.scalatra" %% "scalatra-scalate" % ScalatraVersion,
"org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
"ch.qos.logback" % "logback-classic" % "1.1.2" % "runtime",
"org.eclipse.jetty" % "jetty-webapp" % "9.1.5.v20140505" % "container",
"org.eclipse.jetty" % "jetty-plus" % "9.1.5.v20140505" % "container",
"javax.servlet" % "javax.servlet-api" % "3.1.0",
"org.sorm-framework" % "sorm" % "0.3.18",
"com.h2database" % "h2" % "1.4.187",
"org.fusesource.scalamd" % "scalamd_2.10" % "1.6"
)
Run Code Online (Sandbox Code Playgroud)
在一台机器上,我可以毫无问题地运行./sbt; 另一方面,我明白了
[error] Modules were resolved with conflicting cross-version suffixes in {file:/C:/dev/scalaspace/game-tracker/}game-tracker:
[error] org.scala-lang.modules:scala-xml _2.11, _2.12.0-M1
[error] …Run Code Online (Sandbox Code Playgroud) 我对SORM非常感兴趣,但是当我尝试使用它时,我遇到了问题.假设我有两个实体:
case class User(login: String, firstName: String, lastName: String)
case class UserSite(userId: Int, name: String, url: String)
Run Code Online (Sandbox Code Playgroud)
如何声明外键关系UserSite.userId - > User.id?我看到类ForeignKey,但没有任何使用它的例子.
谢谢.
我正在尝试将Sorm用于游戏框架项目.我正在使用使用Scala 2.10的2.1版本.问题是我的课程不被Sorm认可,我得到了ClassNotFoundException
这是我用过的:
package models
case class User(val name: String)
object Db extends Instance (
entities = Set(Entity[User]()),
url = "jdbc:h2:mem:test"
)
Run Code Online (Sandbox Code Playgroud)
在我的控制器中:
import models.{Db,User}
object Application extends Controller {
def index = Action {
Db.save(User("test")) // Error at this line
Ok("saved")
}
}
Run Code Online (Sandbox Code Playgroud)
例外情况:
play.api.Application$$anon$1: Execution exception[[ClassNotFoundException: models.User]]
at play.api.Application$class.handleError(Application.scala:279) ~[play_2.10.jar:2.1-RC1]
at play.api.DefaultApplication.handleError(Application.scala:373) [play_2.10.jar:2.1-RC1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$10$$anonfun$apply$27.apply(PlayDefaultUpstreamHandler.scala:296) [play_2.10.jar:2.1-RC1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$10$$anonfun$apply$27.apply(PlayDefaultUpstreamHandler.scala:294) [play_2.10.jar:2.1-RC1]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:110) [play_2.10.jar:2.1-RC1]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:110) [play_2.10.jar:2.1-RC1]
Caused by: java.lang.ClassNotFoundException: models.User
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) ~[na:1.7.0_09]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_09]
at java.security.AccessController.doPrivileged(Native …Run Code Online (Sandbox Code Playgroud) 我有一个Workspace和Document实体,其想法是工作空间可以包含零个,一个或多个文档.我对此进行建模的第一种方法是:
case class Workspace(name: String, documents: Seq[Document])
Run Code Online (Sandbox Code Playgroud)
但由于我的工作区可能包含许多文档,因此无法很好地扩展.幸运的是,我的业务需求,允许我单独处理工作空间和文件(在这个意义上,当我有一个工作空间,也没有迫使我考虑其中包含的所有文件的原因还是不变).
问:我想知道:我将如何建模Workspace和Document在SORM使我有两个之间的联系,但没有加载一个工作区的所有文件?我想有一个存储库可以让我访问工作区的文档,并提供分页支持.)
case class Workspace(name: String)
case class Document(name: String, /* ... */)
trait WorkspaceRepository {
def children(ws: Workspace, offset: Long, limit: Long)
}
Run Code Online (Sandbox Code Playgroud) 我发现SORM非常有趣且有前途,但我找不到一种方法来整合它与任何指南玩?
我一直在努力让SORM使用Play Framework 2.2-SNAPSHOT以及2.1.1.目前,我正在尝试运行我创建的简约示例应用程序,以便更轻松地跟踪问题.不幸的是,我收到的错误消息对我没有任何帮助.
val appDependencies = Seq(
"org.sorm-framework" % "sorm" % "0.3.8",
"com.h2database" % "h2" % "1.3.168"
)
Run Code Online (Sandbox Code Playgroud)
# Database configuration
#
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
# db.default.user=sa
# db.default.password=""
Run Code Online (Sandbox Code Playgroud)
case class Car( brand: String, wheels: Int )
object Db extends Instance( Seq( Entity[Car]() ), "jdbc:h2:mem:play" )
Run Code Online (Sandbox Code Playgroud)
object Application extends Controller {
def index = Action {
Db.query[Car].count()
Ok("hello wolrd")
}
}
Run Code Online (Sandbox Code Playgroud)
此堆栈跟踪中的结果:
play.api.Application$$anon$1: Execution exception[[RuntimeException: java.lang.NoSuchMethodError: scala.reflect.internal.TreeInfo.firstArgument(Lscala/reflect/internal/Trees$Tree;)Lscala/reflect/internal/Trees$Tree;]]
at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.1]
at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$17$$anonfun$apply$24.apply(PlayDefaultUpstreamHandler.scala:326) [play_2.10.jar:2.1.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$17$$anonfun$apply$24.apply(PlayDefaultUpstreamHandler.scala:324) [play_2.10.jar:2.1.1]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) …Run Code Online (Sandbox Code Playgroud)