小编TOB*_*TOB的帖子

在Play 2 Scala中处理事务的传统方法是什么?

我在Play 2.1 Scala项目中使用JDO进行数据存储.理想情况下,我希望每个请求都有自己的事务,在完成时提交,如果出现问题则回滚.

我可以想出的最好的方法是使用Action Composition,在那里我创建自己的Action类似对象来启动事务,将代码块包装Action在一起,对其进行评估并保存结果,提交或回滚事务,然后返回结果.

我唯一担心的是我的整个项目现在由DbActions而不是常规Actions组成.我不确定为什么这会让我感到担忧,除了我认为必须有一个更好的地方来做这件事.但是,当我检查可用的挂钩时GlobalSettings,看起来没有任何效果.

我应该一起去做DbAction并停止自我猜测,还是有一个地方可以将这种行为挂钩,以便我可以使用Action

托德

database scala playframework playframework-2.0

5
推荐指数
1
解决办法
1192
查看次数

有没有办法从Scala中的Manifest [List [X]]中提取项类型?

我知道一些是基于Manifest的List [_]我已经传入一个方法,但是我需要知道列表是什么类型的项目.这些信息是存储在Manifest的某个地方吗?你可以把它拿出来吗?如果没有,有关如何解决这个问题的任何建议?

(基本上,我有一个Map [Manifest [_],Blah],其中Blah根据类类型处理案例.处理List [X]可以基于X组合,但我需要能够弄清楚X是什么我可以从地图中获取它的Blah值.)

谢谢!

scala

4
推荐指数
2
解决办法
221
查看次数

在Scala中,有没有办法让两个重载方法只在隐含是否可用的情况下有所不同?

我正在编写一个访问数据库的Scala应用程序.大多数情况下,会有一个连接可用,但有时不会.我想做的是如下:

object User {
  def authenticate(username: String, password: String)
      (implicit conn: Connection): Option[User] = {
    // use conn to grab user from db and check that password matches
    // return Some(user) if so, None if not
  }
  def authenticate(username: String, password: String): Option[User] = {
    implicit val conn = DB.getConnection()
    authenticate(username, password)
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望会发生的是,如果有Connection可用类型的隐式值,编译器将使用第一种方法.如果没有,它将使用第二个.不幸的是,我发现编译器并不那么聪明,或者如果是,我不会以正确的方式告诉它该做什么.

所以,我的基本问题是,是否有一种方法可以编写一个需要隐式参数的方法,然后提供相同方法的重载版本,如果没有可用的参数,则创建隐式参数类型的可接受值.

你可能会说,"你为什么要做这样的事情?如果你能创造一个合适类型的可接受值,为什么不总是这样做?" 这是最正确的,除非我有一个开放的数据库连接,我宁愿继续使用它而不是创建一个新的.但是,如果我没有开放的数据库连接,我知道从哪里获得一个.

我的意思是,简单的答案就是给这两种方法赋予不同的名称,但我不应该这样做,天哪.但也许我这样做......

谢谢!托德

scala overloading

3
推荐指数
1
解决办法
247
查看次数

如何告诉Scala使用正确的Java构造函数?

我正在尝试在Scala中使用JodaTime.所以我做了

import org.joda.time.DateTime

val dt = new DateTime(2011, 10, 8, 18, 30) // try to set to 6:30 pm, Oct 8, 2011
Run Code Online (Sandbox Code Playgroud)

不幸的是,Scala认为我正在尝试使用DateTime(Object)构造函数而不是5 int构造函数,并且毫不奇怪,Tuple5不是JodaTime所期望的那种对象.

如何告诉Scala使用5-int构造函数?

托德

scala

2
推荐指数
1
解决办法
235
查看次数