如何在Play MVC中获得JPA工作。我尝试了很多变体。但是,一切都不成功。

public class Application extends Controller {

    public static void book() {
        EntityManager em = JPA.em();
        List<Book> bookList = em.createNativeQuery("select * from book").getResultList();

        render( bookList );
    }


    public static void index() {
        render( );
    }
}


我有这样的错误:

发生JPA错误(未初始化JPA上下文。当在应用程序中找到一个或多个带有@ javax.persistence.Entity批注的类时,JPA实体管理器会自动启动。):

第二个变种不起作用:

@NamedQuery(name =“ findFoo”,查询=“从Foo f中选择f,其中:stateInList中的f.state”)

最终查询查询= this.entityManager.createNamedQuery(“ findFoo”);

如何与NamedQuery一起使用?在哪里放置NamedQuery?

最佳答案

您命名的查询是正确的,您可以将其写在实体上方

@Entity
@Table(name = "Foo")
@NamedQuery(
{
    @NamedQuery(name = "findFoo", query = "select f from Foo f where f.state in :stateInList")
)}
public class Foo
{
 ....

}

10-04 16:32