-1

という名前のテーブルを含む MySQL データベースがありますUser。2 つの列があります。1 つは という名前IDで、もう 1 つは ですEMAIL。より多くの列がありますが、それは質問とは無関係です。

私の DAO オブジェクトで、 という名前のメソッドを作成したいと思いますfindByEmail。現在、次のようになっています。

@Override
public User findByEmail(String email) {
    Object obj = em.createQuery("FROM User WHERE EMAIL LIKE :email").setParameter("email", email).getSingleResult();
    User user = (User)obj;
    return user;        
}

これにより、nullpointer-exception が発生します。私の推測では、私のクエリは間違っています。誰かがこれについて私を助けることができますか?

4

2 に答える 2

0

どうやら、MySQL サーバーはすべてのリモート接続をブロックするように構成されていたようです。動作するようになりました (vels4j が提供する JPA クエリを使用select r FROM User r WHERE r.EMAIL = :email) 。

于 2012-11-26T14:53:43.413 に答える
0

あなたが言ったように、あなたはそのようにすることができます。しかし、より近い SQL アプローチを使用したい場合は、次を使用することもできます。

    @Override
public User findByEmail(String email) {
    Object obj = em.createNativeQuery("SELECT * FROM User WHERE EMAIL = " + email).getSingleResult();
    User user = (User)obj;
    return user;        
}

また、コードを短縮したい場合は、次のようにクエリを実行する同じ行でユーザーを宣言してキャストできます。

User user = (User) em.createNativeQuery("SELECT * FROM User WHERE EMAIL = " + email).getSingleResult();

それが役に立てば幸い!

于 2016-12-09T11:23:34.633 に答える