次のユースケースを説明しましょう。new
キーワードを使用してデータオブジェクトを作成するJPQLクエリがあります。 SELECT
節では、データベースには知られていないが、それを照会する層に属性を挿入したいと考えています。JPQL SELECT句への属性の挿入
これは、SELECT句に属性またはパラメータインジェクションのこの種は、JPQLに働くかもしれない方法
EntityManager em; // Got it from somewhere
boolean editable = false; // Value might change, e.g. depending on current date
Query q = em.createQuery("SELECT new foo.bar.MyDTO(o, :editable) FROM MyObject o")
.setParameter("editable", editable);
List<MyDTO> results = (List<MyDTO>) q.getResultList();
任意のアイデアのように見えるだろうか? JPAとJPA 2.0の両方のソリューションが適用可能です。
編集:パフォーマンスは重要な役割を果たしませんが、コードの明快さと清潔さが重要です。
ニース読んで、賞を授与します:-) – nre