错误java.lang.ClassNotFoundException:org.springframework.orm.jpa.EntityManagerFactoryUtils仅在查询未找到任何结果时

时间:2013-10-30 15:25:31

标签: java spring hibernate jpa

我会先发布我的代码。

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"),

此代码可以正常使用名称和姓氏的人确实存在于数据库中。

如果我输入不在数据库中的姓名或姓氏,我会得到这样的例外:

  

线程“main”中的异常java.lang.NoClassDefFoundError:   org / springframework / orm / jpa / EntityManagerFactoryUtils at   org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect.ajc $ $ afterThrowing org_springframework_orm_jpa_aspectj_JpaExceptionTranslatorAspect $ 1 $ 18a1ac9(JpaExceptionTranslatorAspect.aj:33)     在   pl.program.dao.PersonJpaDao.checkIfExists(PersonJpaDao.java:27)     在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)at   java.lang.ClassLoader.loadClass(ClassLoader.java:424)at   sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at at   java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 4更多

例如,如果我在数据库中有名字的人 - 杰克和姓黑,我打电话

checkIfExists("Jack", "Black")
一切都好。但是如果我把它改成

checkIfExists("Jack1", "Black")

我上面提到例外。

同样的问题发生在这样的其他方法上,当数据库中没有记录并且我想使用getSingleResult()时。

我尝试getResultList()并返回空列表。

你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是maven,则必须缺少以下依赖性(当然各自的版本):

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>3.2.4.RELEASE</version>
</dependency>

OR

如果不使用maven,请明确提供此jar文件(再次提供相应版本):

spring-orm-3.2.4.RELEASE.jar