0

JPAは初めてで、実装としてeclipseLinkを使用しています。

データベースから ID = 11 のパッケージを取得しようとしています。

Package p1 = null;
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
p1 = em.find(Package.class, id);
em.getTransaction().commit();
em.close();


EclipseLinks' SQL log delivers correct SQL.
[EL Fine]: sql: 2013-11-03 14:48:59.711--ServerSession(538471155)--Connection(174248886)--Thread(Thread[main,5,main])

--SELECT ID, depth, length, weight, width, counrty, street, zip FROM Packages WHERE (ID = ?)
    bind => [11]

このSQLを実行し、手動で置き換えますか? 11 を指定すると、正しい行が配信されます。私は何が欠けていますか?

Ps。すべてのレコードのクエリは正常に機能しており、entitymanager の同じインスタンスが使用されています。クエリ query = em.createQuery("SELECT p FROM Package p");

前もって感謝します

pps。

em.getTransaction().begin();

        p1 = em.find(Package.class, id);
        if(p1 != null) {
            log.log(level.INFO, "not null");
        }
        else {
            log.log(level.INFO, "null");
        }
        em.flush();
        em.getTransaction().commit();
        em.close();

ログは null ではありません。packagedata が存在し、正しいです。em.close() でもログに記録できます。すべてが順調に進んでいるようです。

私が...した途端

return p1;

外部からの関数はデータにアクセスできなくなりました

最終編集:

SOMEHOW log.log(Level.INFO, "ID のパッケージが見つかりました:", p1.getId()); 「:」xD以降は何も書いていないので、ごめんなさい^^

4

0 に答える 0