播放2.1计算机数据库示例-JPA用于Java,但不用于Scala

播放2.1计算机数据库示例-JPA用于Java,但不用于Scala,scala,jpa,playframework,playframework-2.1,Scala,Jpa,Playframework,Playframework 2.1,Play2.x中的计算机数据库示例是用JPA为Java版本编写的,而不是为Scala版本编写的,这是否奇怪?我们应该读点什么吗 我正在准备一个Scala Play 2.1/JPA/MySQL PoC,我发现这很奇怪 编辑 似乎Play确实正在远离JPA: 此外,我无法让简单的实体获取工作。我可以连接到我的MySQL DB,但是,当我有一个用play.DB.jpa.Transactional注释的操作方法时,我得到一个运行时错误: play.api.Application$$anon$1: Exe

Play2.x中的计算机数据库示例是用JPA为Java版本编写的,而不是为Scala版本编写的,这是否奇怪?我们应该读点什么吗

我正在准备一个Scala Play 2.1/JPA/MySQL PoC,我发现这很奇怪

编辑

似乎Play确实正在远离JPA:

此外,我无法让简单的实体获取工作。我可以连接到我的MySQL DB,但是,当我有一个用play.DB.jpa.Transactional注释的操作方法时,我得到一个运行时错误:

play.api.Application$$anon$1: Execution exception[[RuntimeException: No EntityManager bound to this thread. Try to annotate your action method with @play.db.jpa.Transactional]

它无法识别TX。

第一个问题是配置文件中需要jpa.default=defaultPersistenceUnit。检查。但是,仍然无法识别操作方法上的@Transaction。有必要将代码包装在JPA.withTransaction中以使其工作。有人知道@Transactional为什么不工作吗?JPA.withTransaction()可以正常工作,但play.db.JPA.Transactional应该做同样的事情。放置在控制器操作方法上时没有效果。我发现了与您相同的问题。我建议您创建一个服务层,并在其中使用JPA.withTransaction,以便包装对您的函数的调用。我还没有这样做,但这是我需要做的下一步,因为我使用JPA.withTransaction的测试用例工作正常,而当我使用@Transactional时,我的Scala控制器失败。