SimpleORM4Jでは、Criteriaメソッドの引数として使用する式表現(Expression)の中で、「名前付きプレースホルダ」を使用できます。
名前付きプレースホルダを使用した場合、静的プレースホルダとしてPREPARE文の実行後にパラメータがバインドされます。
ユーザからの入力値は、直接式表現に値を記述するのではなく、「名前付きプレースホルダ」を使用してください。
SQLインジェクション対策として、「名前付きプレースホルダ」の使用を推奨します。
「名前付きプレースホルダ」を式表現(Expression)で使用するには、「:(セミコロン)」の後ろにプレースホルダ名を記述してください。
EntityManager#createQueryメソッドでQueryを作成後に、Query#setParameterメソッドで、パラメータを設定してください。
■ 実装例 try { EntityManager em = EntityManagerFactory.createEntityManager(); Criteria criteria = em.getCriteria(); criteria.select(School.class.getDeclaredField("id"), School.class.getDeclaredField("name"), Department.class.getDeclaredField("schoolId")) .from(Department.class) .join(JoinType.RIGHT, School.class, Expression.equal(School.class.getDeclaredField("id"), Department.class.getDeclaredField("schoolId"))) .where(Expression.equal(School.class.getDeclaredField("id"), ":id")); Query query = em.createQuery(criteria); query.setParameter("id", 3); List<Map<String, Object>> resultList = (List<Map<String, Object>) query.getResultList(); System.out.println(resultList); } catch (Exception e) { e.printStackTrace(); }
SimpleORM4Jへのご意見やご感想がございましたら、メッセージをお願い致します。
また、SimpleORM4Jを使用して頂きまして、バグがございましたらご連絡を頂けると助かります。
皆様からのご意見・ご感想をもとに、SimpleORM4Jを改善・拡張をしていきたいと考えております。
皆様からのメッセージは当方で確認をしておりますが、仕事をしながらの開発となる為、すぐにご返信・対応をすることが
出来ない場合がございます。何卒ご容赦ください。
タイトル※ | |
---|---|
メールアドレス | |
内容※ |