1

私の現在のコード:

TypedQuery<Account> tp = em.createQuery("SELECT a FROM Account a INNER JOIN User u ON u.account_id = a.id WHERE a.email = :email AND a.pwd = :pwd AND a.role = 'admin'", Account.class);
                tp.setParameter("email", this.username);
                tp.setParameter("pwd", this.password);
                Account result = tp.getSingleResult();

しかし、java.lang.IllegalArgumentException が発生します。

必要なのは、ユーザー テーブルに列を表示することです。

String name = Account.getName();ていますが、Account エンティティには getName() がありません User エンティティだけが持っています。

*アップデート

これがエラーです

java.lang.IllegalArgumentException: EntityManager でクエリを作成中に例外が発生しました: 例外の説明: クエリを解析する構文エラー [SELECT a FROM Account a INNER JOIN User u ON u.account_id = a.id WHERE a.email = :email AND a.pwd = :pwd AND a.role = 'admin']。内部例外: org.eclipse.persistence.internal.libraries.antlr.runtime.EarlyExitException

4

2 に答える 2

0

これを試して。

result.getUser().getName();

ただし、これは Account クラスが User クラスと関係を持っていることを前提としています。

これがHibernate/JPAの関係であるという仮定は、前の質問と上記のコードでのHQLの使用に由来します。

于 2013-02-13T08:49:01.253 に答える