我正在使用Play!框架以及Anorm访问数据库.我经常看到如下例子,其中对象成员直接注入SQL语句.
我的问题是,这些投入是否已消毒?大多数示例如下所示:
object Person {
def save(p:Person) {
DB.withConnection ("default") { implicit connection =>
SQL("""
INSERT INTO person(firstName,lastName)
values ({firstName}, {lastName})
"""
).on(
"firstName" -> p.firstName,
"lastName" -> p.lastName
).executeUpdate()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我会试图通过黑客行为找出答案,但很容易犯错,所以我觉得要求更合适,我可以借鉴人群的智慧.
我正在使用Scala Play!使用Anorm将数据模型持久化到数据库的框架.我在这里遵循示例代码:
case class Bar(id: Pk[Long], name: String)
object Bar {
val simple = {
get[Pk[Long]]("id") ~
get[String]("name") map {
case id~name => Bar(id, name)
}
}
def findAll(): Seq[Bar] = {
DB.withConnection { implicit connection =>
SQL("select * from bar").as(Bar.simple *)
}
}
def create(bar: Bar): Unit = {
DB.withConnection { implicit connection =>
SQL("insert into bar(name) values ({name})").on(
'name -> bar.name
).executeUpdate()
}
}
}
Run Code Online (Sandbox Code Playgroud)
试图扩展它,我想检索刚刚创建的主键并将其存储在案例类中.
如何检索主键?
我可以在一行中捕获以下两条路线吗?
GET /game controllers.Main.app.gamelist
GET /game/ controllers.Main.app.gamelist
Run Code Online (Sandbox Code Playgroud) 在我的问题之后,我正在探讨在CouchDB中文档版本控制的通用方法的想法.虽然我想可能没有规范方法,但我有以下想法并且正在寻找反馈.
我希望尽可能保持可读的文档ID,因此存在的文档document1将包含指向系统上所有现有版本的指针文档.实际的修订文件,将在像document1/308ef032a3801a这里
308ef032a3801a是一些随机数或哈希值.
指针文件
{
"_id" : "document1",
"versions" : [ "document1/308ef032a3801a" ]
}
Run Code Online (Sandbox Code Playgroud)
版本文件
{
"_id" : "document1/308ef032a3801a",
... actual content
}
Run Code Online (Sandbox Code Playgroud) 我想通过在测试期间提供模拟对象来测试我的Play应用程序.在我的头顶,有几种方法可以解决这个问题.
我不确定哪个更可行,或者如何去做.任何见解将不胜感激.
testing dependency-injection scala playframework playframework-2.0
Play允许您直接在控制器中返回许多不同类型,例如JsValue或XML与纯文本一起.我想扩展它以接受协议缓冲区,所以我可以写:
def page = Action {
val protobuf = //...
Ok(protobuf)
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Play framework 2.0.我想用Selenium编写一些基于浏览器的验收测试,但我之前从未使用过Selenium,必须少用Play或Scala集成它.
我可以复制和使用的基本设置是什么?
我有一些.proto文件用于我的项目,我使用生成的Java源代码.我希望Play能够在项目编译期间自动编译并包含这些文件.
理想情况下,我会将.proto文件保存在app目录中,如下所示:
<play root>/
app/
protobuf/
myfile.proto
controllers/
Application.scala
...
Run Code Online (Sandbox Code Playgroud)
一些要求如下:
我正在遵循这里的文档,因为我想将Actors添加到应用程序提供的actor系统中.我尝试导入应用程序actor系统:
import play.libs.concurrent.Akka
Run Code Online (Sandbox Code Playgroud)
我正在使用sbt compile调用我的编译并收到以下错误
[error] app/controllers/Application.scala:9: object concurrent is not a member of package play.libs
[error] import play.libs.concurrent.Akka
[error] ^
[error] one error found
Run Code Online (Sandbox Code Playgroud)
#Disable DBPlugin
dbplugin=disabled
#Disable DB evolutions
evolutionplugin=disabled
#Disable Eh Cache
ehcacheplugin=disabled
# Logger
# ~~~~~
# You can also configure logback (http://logback.qos.ch/), by providing a logger.xml file in the conf directory .
# Root logger:
logger.root=ERROR
# Logger used by the framework:
logger.play=INFO
# Logger provided …Run Code Online (Sandbox Code Playgroud) 我正在使用Play 2.0和Akka来部署Web应用程序.我根据责任分离了演员,因为演员经常需要在单个Web请求期间相互通信.
例如,给定一个管理注册设备的actor,它必须查询处理相关用户帐户的另一个actor:
class DeviceActor extends Actor {
val accountActorRef = ...
def receive = {
case GetAccountByDeviceId(id:String) =>
val accountId = getAccountIdAssociatedWithDevice(id)
accountActorRef ? GetAccountById(accountId) map {
case account: Account => sender ! account
}
}
}
Run Code Online (Sandbox Code Playgroud)
DeviceActor从我的控制器打电话时,我总是得到
akka.pattern.AskTimeoutException
Run Code Online (Sandbox Code Playgroud) 我做了一个简单的类来学习如何读取Java字节码.什么行
Stack=1, Locals=1, Args_size=1
Run Code Online (Sandbox Code Playgroud)
在folloiwng代码中意味着什么?
public Demo();
Code:
Stack=1, Locals=1, Args_size=1
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 1: 0
Run Code Online (Sandbox Code Playgroud)