Hazırda Geri Gösteriminde İpuçları: Kriterler sorgusunu kullanarak Skaler Değerler Seçin

Portakalkafa

Global Mod
Global Mod
Tipps Hibernate serisi, hazırda bekletme sorularını yaymak için hızlı ve basit çözümler sunuyor. Bu kez kriter sorularında skaler bir projeksiyon kullanılması sorunudur.

Sormak:


JPQL sorgusu (Java Persistence sorgusu dili) ile geliştiriciler birkaç skaler değer seçebilir. Aynı projeksiyonu bir kriter sorgusu ile kullanabilir miyim yoksa her zaman varlık veya DTOS'u (veri aktarımına tabi) seçmek zorunda mıyım?

Çözüm:


Kriterlerin arıları genellikle biraz karışık görünse bile, JPQL ile aynı özellikleri destekler. Bu nedenle farklı skaler değerlerin projeksiyonları, varlıkları, DTO ve skaler değerleri birleştiren projeksiyonlar olarak eşit derecede mümkündür.

Birkaç skaler değer seçmek için Çok seçici (seçim … seçimler)Yöntemi kullanın. Aşağıdaki kaynak kodu bu sorgunun bir örneğini göstermektedir:

// Abfrage erzeugen
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> q = cb.createTupleQuery();
Root<Author> author = q.from(Author.class);
// Mehrere skalare Werte selektieren
q.multiselect(author.get(Author_.firstName).alias("firstName"), author.get(Author_.lastName).alias("lastName"));

// Abfrage ausführen
List<Tuple> authorNames = em.createQuery(q).getResultList();

for (Tuple authorName : authorNames) {
log.info(authorName.get("firstName") + " " + authorName.get("lastName"));
}


. Çok seçkin-Method onu bekliyor Kurnaz Veya bir dizi Seçme-seçilecek varlığın mülklerini atayanera. Bu örnekte, JPA Meta modelini özellikleri tip geçirmez bir şekilde yönlendirmek için kullanıyorum.

Örnek gerçekleştirilirse, Hibernate sadece bir SQL sorgusu oluşturur. Çok seçkin-Biredilen veritabanı seçilen sütunlar:

13:57:18,403 INFO[org.thoughts.on.java.model.TestCriteriaTuples] - ... selectTuples ...
13:57:18,818 INFO[org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] - HHH000397: Using ASTQueryTranslatorFactory
13:57:19,158 DEBUG [org.hibernate.SQL] -
select
author0_.firstName as col_0_0_,
author0_.lastName as col_1_0_
from
Author author0_
13:57:19,188 INFO[org.thoughts.on.java.model.TestCriteriaTuples] - Thorben Janssen
13:57:19,188 INFO[org.thoughts.on.java.model.TestCriteriaTuples] - Joshua Bloch
13:57:19,189 INFO[org.thoughts.on.java.model.TestCriteriaTuples] - Gavin King

Sorgunun sonucu daha sonra Kurnaz itibaren Yumru-Arayüzler geri döndü. . Yumru-Ne -Interface, seçilen özelliklere rahat erişim sunar. Seçilen sütunlar ayrıca dizin yoluyla veya bu örnekte olduğu gibi AKA olarak atanan adlarda da referans verilebilir.


Hazırda Geri Gösterim İpuçları – Kitap


Basit ve karmaşık haritalama tanımları, kayıt, Java 8'in desteği, önbellekte depolama ve statik ve dinamik üretim gibi konularda bunların 70'den fazla tarifi “İbernament Önerileri: Ortak Hazırda Bekleme Sorunlarına Daha Fazla 70 Çözüm” kitabımda mevcuttur. Amazon'da cep ve e-kitap ve hibernate-tips.com'da PDF olarak mevcuttur.








()
 
Üst