我目前在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
有什么我可以跳过的吗?
答案 0 :(得分:0)
您的代码无法编译,因为您的类路径中可能有旧版本的JPA,其中createNamedQuery(String,Class)方法不存在(有关此旧版本的文档,请参阅http://docs.oracle.com/javaee/5/api/javax/persistence/EntityManager.html) 。即如果您使用JPA 1.0,那么它将无法正常工作 请检查您的JPA版本