我是Scala的新手,我不知道如何解決方法withTransaction的編譯錯誤:
Cannot resolve overloaded method 'withTransaction'
object Global {
def goBootstrap(app: Application) {
Logger.info(" **** start *****"/span>)
onGet()。
}
def onGet() {
import play.db.jpa.JPA。
Logger.info("Cnnection start") 。
JPA.withTransaction(JPA.em =>
{
val resultsList = JPA.em.createNamedQuery("findCity"/span>)。 setParameter("name", "Boston").getResultList。
}
);
}
該代碼片段位于Play專案(2.3.X版)的Global.scala檔案中。JPA來自import play.db.jpa.JPA
。我怎樣才能解決這個編譯錯誤呢?
uj5u.com熱心網友回復:
這個錯誤告訴你,JPA上沒有一個方法的簽名與你所傳遞的引數相匹配。你正在呼叫JPA.withTransaction( () => Unit)。
查看source,有三個方法withTransaction的回傳型別為Unit:
void withTransaction(Consumer<EntityManager> block)。
void withTransaction(String name, Consumer<EntityManager> block)。
void withTransaction(String name, boolean readOnly, Consumer<EntityManager> block)。
我將假設你試圖使用這些方法中的第一個。查看消費者的檔案,它需要一個引數。
簡而言之,你需要為你的塊提供一個輸入,就像:
JPA.withTransaction(JPA.em => {
val resultsList = JPA.em. createNamedQuery("findCity").setParameter("name", name).getResultList
});
uj5u.com熱心網友回復:
問題是,你不能通過scala直接實體化JPA連接。也是因為play2.3框架不支持這個功能。https://www.playframework.com/documentation/2.3.x/ScalaHome
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/309119.html
標籤:
