【发布时间】:2018-02-16 21:21:35
【问题描述】:
我正在尝试在 Play for Scala 中实现 JPA 查询。我从here 获取信息,但由于示例是用Java 编写的,我可能弄错了。这是代码:
class ManageBanks @Inject() (jpaApi: JPAApi) extends Controller {
@Transactional
def readMany = {
val em = jpaApi.em
jpaApi.withTransaction( (em: EntityManager) => { // <-- error in this line
val query = em.createQuery("from BankHib order by name")
val list = query.getResultList.asScala.toList.map(_.asInstanceOf[BankHib])
list
})
}
}
编译时出现以下错误:
withTransaction 的重载方法值与备选方案:[T](x$1: 字符串,x$2:布尔值,x$3:java.util.function.Supplier[T])T (x$1: Runnable)Unit [T](x$1: java.util.function.Supplier[T])T [T](x$1: 字符串, x$2: 布尔值, x$3: java.util.function.Function[javax.persistence.EntityManager,T])T [T](x$1: 字符串, x$2: java.util.function.Function[javax.persistence.EntityManager,T])T [T](x$1: java.util.function.Function[javax.persistence.EntityManager,T])T 不能应用于 (javax.persistence.EntityManager ⇒ 列表[admin.manage.BankHib])
这段代码有什么问题?如何使查询工作?
【问题讨论】:
-
如果将 (em: EntityManager) => 替换为 em -> only
-
这并不能解决问题,因为 Scala 中的
->用于 Map 结构
标签: scala playframework playframework-2.0 playframework-2.5