TypedQuery - EntityManager中的createQuery(String)无法应用于(String,java.lang.Class <models.person>)

时间:2015-08-08 15:04:21

标签: java playframework persistence jpa-2.0

我目前在Play应用程序中遇到以下问题:

TypedQuery<Person> query = JPA.em().createQuery(
            "SELECT p FROM Person p WHERE p.email = :email AND p.password = :password", Person.class);
query.setParameter("email", email);
query.setParameter("password", password);

我一直收到错误:

  接口javax.persistence.EntityManager中的

方法createQuery不能应用于给定的类型;   必需:java.lang.String   发现:java.lang.String,java.lang.Class    原因:实际和正式的参数列表长度不同

我已将所有内容与我之前使用TypedQueries的项目进行了比较,但似乎已正确配置。 我的build.sbt:

libraryDependencies ++= Seq(
javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"),
"org.hibernate" % "hibernate-entitymanager" % "4.3.8.Final" 
)

在application.conf文件中:

db.default.driver=org.sqlite.JDBC
db.default.url="jdbc:sqlite:db/systemData"
db.default.jndiName=DefaultDS
jpa.default=defaultPersistenceUnit

有什么我可以跳过的吗?

1 个答案:

答案 0 :(得分:0)

您的代码无法编译,因为您的类路径中可能有旧版本的JPA,其中createNamedQuery(String,Class)方法不存在(有关此旧版本的文档,请参阅http://docs.oracle.com/javaee/5/api/javax/persistence/EntityManager.html) 。即如果您使用JPA 1.0,那么它将无法正常工作 请检查您的JPA版本