以下のコードを使用して、単一のNotificationSubTypeオブジェクトを取得しようとしました。しかし、 "org.apache.openjpa.persistence.ArgumentException:発生しました "のような例外を見つけることから" 文字1で、しかし予想: " [" DELETE " "SELECT"、" UPDATE]"JPAコンポジットプライマリキーを持つクエリで例外が発生する
することは、私を助けてください与えられた問題について。 コードは以下の通りです: ... ...
try {
Query query = this.em.createQuery("from NotificationSubType conc WHERE conc.id.alertTyC = ?1 and conc.id.alertSubTyC = ?2");
query.setParameter(1, "MPPRINT");
query.setParameter(2, "REIN");
NotificationSubType trackIdResLst = (NotificationSubType)query.getSingleResult();
if (null != trackIdResLst) {
System.out.println("TRUE");
} else{
System.out.println("FALSE");
}
} catch (Exception e) {
NotificationLogger.errorWithThrowable(e);
throw new NotificationServiceException(e.getMessage());
}
...
大変ありがとうございます。私もselectで試しました。 "select * from NotificationSubType"のような単純なselectクエリで成功を収めていますが、 "select * from NotificationSubType conc where conc.id.alertTyC =?1 and conc.id.alertSubTyC =?2"のような条件を追加しているときは、 。 Open JPAで条件付き選択クエリを構成するために必要なものはありますか? –
私が言ったように... JPA仕様を読んでください。 JPQLでは "SELECT *"を実行することはできません! "SELECT conc FROM NotificationSubType conc"はJPQL!です。 JPAでランダムにSQLを投げるのではなく、ドキュメントを読んでください。 JPQL!= SQL –