1

私は次のコードを持っています:結果としてjava.lang.NullPointerException

List results = em.createNamedQuery("User.findByUserName").setParameter("userName", username).getResultList();

ユーザーはエンティティBeanであり、次のものが含まれます。

@NamedQuery(name = "User.findByUserName", query = "SELECT u FROM User u WHERE u.userName = :userName"),

誰かが理由を知っていますか?

4

3 に答える 3

1

メソッドgetResultList()はスローしませんNullPointerException(一致するものがない場合は空のリストを返します)ので、次のいずれかであると推測しています。

  • 注入/初期化しませんでした(注釈EntityManager emを忘れ ましたか?)@PersistenceContext
  • 文字列usernameがnull

EntityManager nullの場合は、persistence.xmlファイルがあるかどうかを確認してください(必須です!)。次のようになります。

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="OEMSPU" transaction-type="JTA">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <jta-data-source>ADD JNDI NAME OF YOUR DATASOURCE, e.g. jdbc/sample</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
</persistence>
于 2012-10-15T07:28:10.830 に答える
0

public クラスの上に @Stateless アノテーションを追加して Stateless Bean にしてみてください。私のために働いた。

于 2013-06-20T09:10:27.823 に答える
0

これは、psql がエンティティ プロパティ名を参照しているときに発生する可能性があります。私はpsqlのようなことを:param.user = x.userしていましたが、param(createQueryの実行時にまだ渡されていない)からプロパティ「ユーザー」を取得しようとすると、NPEが発生しました。こういう事が出来たら良いのですが…。

于 2015-12-09T21:31:19.167 に答える