Java JPA PersistenceException:无法解析类名
我试图创建一个方法,通过GAE中的项目名称来获取项目,但是我得到了以下错误Java JPA PersistenceException:无法解析类名,java,google-app-engine,jpa,google-cloud-datastore,Java,Google App Engine,Jpa,Google Cloud Datastore,我试图创建一个方法,通过GAE中的项目名称来获取项目,但是我得到了以下错误 javax.persistence.PersistenceException:无法解析类名TestProject 我在if语句开始的那一行的下面一段代码中得到了这个错误 public Project getProjectByProjectName(String projectName){ EntityManager em = EMFService.get().createEntityManager();
javax.persistence.PersistenceException:无法解析类名TestProject
我在if
语句开始的那一行的下面一段代码中得到了这个错误
public Project getProjectByProjectName(String projectName){
EntityManager em = EMFService.get().createEntityManager();
Query q = em.createQuery("SELECT p FROM Project p WHERE p.projectName = " + projectName);
Project p = null;
if(q.getResultList().size() != 0){
p = (Project) q.getSingleResult();
}
return p;
}
我这样调用该方法:getProjectByProjectName(“TestProject”)代码>
为什么java认为testproject是一个类?问错了吗
提前感谢:)如果项目名称为TestProject
,则查询应为
SELECT p FROM Project p WHERE p.projectName = 'TestProject'
而不是像你现在这样
SELECT p FROM Project p WHERE p.projectName = TestProject
如果停止使用字符串连接将参数传递给查询,所有这些都不会发生。这使得您的代码容易受到攻击。一旦一个项目名称包含一个单引号,它就会中断。使用参数:
Query q = em.createQuery("SELECT p FROM Project p WHERE p.projectName = :name");
q.setParameter("name", projectName);
如果项目名称为TestProject
,则查询应为
SELECT p FROM Project p WHERE p.projectName = 'TestProject'
而不是像你现在这样
SELECT p FROM Project p WHERE p.projectName = TestProject
如果停止使用字符串连接将参数传递给查询,所有这些都不会发生。这使得您的代码容易受到攻击。一旦一个项目名称包含一个单引号,它就会中断。使用参数:
Query q = em.createQuery("SELECT p FROM Project p WHERE p.projectName = :name");
q.setParameter("name", projectName);