yaceq
yaceq

Reputation: 81

Error java.lang.ClassNotFoundException: org.springframework.orm.jpa.EntityManagerFactoryUtils only when query didn't find any results

I'll post my code first.

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;
    }

Query:

@NamedQuery(name=Person.findByNameSurname, query="SELECT p FROM Person p WHERE p.name like :i AND p.surname like :n"),

And this code works fine it the person with name and surname really exists in database.

If I type name or surname that's not in database I get such exception:

Exception in thread "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) at pl.program.dao.PersonJpaDao.checkIfExists(PersonJpaDao.java:27) at pl.program.Start.test(Start.java:121) at pl.program.Main.main(Main.java:11) Caused by: 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 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 4 more

So for example if I have in database person with name - Jack and surname Black and I call

checkIfExists("Jack", "Black")

everything is ok. But if I just change it to

checkIfExists("Jack1", "Black")

I get exception mention above.

The same problem happens to other methods like this, when record is not present in database and I want to use getSingleResult().

I tried getResultList() and it returns empty list.

Do you have any ideas what can be problem here?

Upvotes: 0

Views: 7083

Answers (1)

Kalher
Kalher

Reputation: 3653

If you are using maven, you must be missing following dependecy (of course respective version):

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

OR

if not using maven, explicitly provide this jar file(again respective version) :

spring-orm-3.2.4.RELEASE.jar

Upvotes: 1

Related Questions