我会先发布我的代码。
public boolean checkIfExists(String name, String surname) {
Object m = null;
entityManager.getTransaction().begin();
Query q = entityManager.createNamedQuery(Person.findByNameSurname)
.setParameter("i", name).setParameter("n", surname);
try {
m = q.getSingleResult();
} catch (Exception sqle) {
System.out.println("SQL exception: " + sqle.getMessage());
}
entityManager.getTransaction().commit();
if (m != null)
return true;
return false;
}
询问:
@NamedQuery(name=Person.findByNameSurname, query="SELECT p FROM Person p WHERE p.name like :i AND p.surname like :n"),
并且此代码可以正常工作,因为数据库中确实存在具有姓名和姓氏的人。
如果我输入不在数据库中的姓名或姓氏,我会得到这样的异常:
线程“主”java.lang.NoClassDefFoundError 中的异常:org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect.ajc$afterThrowing$org_springframework_orm_jpa_aspectj_JpaExceptionTranslatorAspect$1$18a1ac9(JpaExceptionTranslatorAspect.aj:33) 处的 org/springframework/orm/jpa/EntityManagerFactoryUtils pl.program.dao.PersonJpaDao.checkIfExists(PersonJpaDao.java:27) at pl.program.Start.test(Start.java:121) at pl.program.Main.main(Main.java:11) 原因:java .lang.ClassNotFoundException: org.springframework.orm.jpa.EntityManagerFactoryUtils at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security .AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357)。 .. 还有 4 个
因此,例如,如果我在数据库中有一个名为 - Jack 和姓 Black 的人,我会打电话给
checkIfExists("Jack", "Black")
一切都好。但是,如果我只是将其更改为
checkIfExists("Jack1", "Black")
我得到上面提到的异常。
当数据库中不存在记录并且我想使用getSingleResult()
.
我试过getResultList()
了,它返回空列表。
你有什么想法可能是这里的问题吗?