0

最初にコードを投稿します。

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/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) 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(ネイティブ メソッド) 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 つ以上

たとえば、データベースに名前を持つ人がいるとします-ジャックと姓ブラックと私は電話します

checkIfExists("Jack", "Black")

全て大丈夫。しかし、私がそれを

checkIfExists("Jack1", "Black")

上記の例外について言及しています。

レコードがデータベースに存在せず、使用したい場合、このような他の方法でも同じ問題が発生しますgetSingleResult()

試しgetResultList()てみましたが、空のリストが返されます。

ここで何が問題になる可能性があるか考えていますか?

4

1 に答える 1

1

Mavenを使用している場合、次の依存関係が欠落している必要があります(もちろんそれぞれのバージョン):

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

また

Maven を使用していない場合は、この jar ファイルを明示的に提供します (それぞれのバージョン):

spring-orm-3.2.4.RELEASE.jar

于 2013-10-30T15:49:19.533 に答える