Internation Önerileri: Varlıklar üzerindeki yerel sorgu sonuçlarının görüntüsü için basit seçenekler
Tipps Hibernate serisi, hazırda bekletme sorularını yaymak için hızlı ve basit çözümler sunuyor. Bu kez bunlar daha karmaşık sorgunun sonuçları ve yönetilen varlıklar üzerindeki örnekleridir.
Sormak:
Sorumu yerel bir SQL sorgusu olarak uygulamak zorunda kaldım çünkü JPQL için çok karmaşık. Tesisler üzerindeki sorunun sonucunu ayrı ayrı yüklemek zorunda kalmadan eşlemenin bir yolu var mı?
Çözüm:
Sorgu, varlık tarafından gösterilen veritabanının tüm sütunlarını seçerse, sonucu varlıklar üzerindeki eşleştirmenin 2 yolu vardır:
- Sonuç, varlık tarafından gösterilen veritabanı tablosunun sütunu ile aynı adları ayarlıyorsa, basit ve örtük bir illüstrasyon kullanabilirsiniz.
- Sonuç miktarının sütunun adları veritabanı tablosunun adları olarak saptırılırsa, açık bir örnek tanımlamak gerekir.
Çoğu soru için, sorgunun sonucunun örtük bir dönüşümü en basit ve en hızlı çözümdür. Bunu yapmak için, yalnızca ek bir parametre olarak seçilen varlık sınıfı Yaratıcı soru Yöntem.
Book b = (Book) em.createNativeQuery("SELECT * FROM book b WHERE id = 1",
Book.class).getSingleResult();
. EntityManager Özellikleri üzerinde tanımlanan sütunların adlarının çizimlerini kullanın. Bu nedenle, yerel sorgunun sonuçlarının sütunun adları, varlık tarafından gösterilen veritabanı tablosunun sütunun adlarına karşılık gelmelidir.
Sorgunun sonuçlarının açık bir örneği
Sorgunun sonucunun adları tablonun adlarından farklısa, bir @Sqlresultsetmapping Ek açıklama tanımlanabilir.
@SqlResultSetMapping(
name = "BookMapping",
entities = @EntityResult(
entityClass = Book.class,
fields = {
@FieldResult(name = "id", column = "id"),
@FieldResult(name = "version", column = "version"),
@FieldResult(name = "title", column = "title"),
@FieldResult(name = "publishingDate",
column = "publishingDate"),
@FieldResult(name = "publisher", column = "publisherid")}))
Haritamanın daha sonra atıfta bulunabileceği ada atıfta bulunulmalıdır ve @Entityyresul-Dipnot. . @Entitydyresult-Her bir veri kaydı için hangi sınıfın başlatılması gerektiği ve bir listenin bir listesini açıklar. @AlanSonucun sütunları gibi ek açıklamalar varlığın özelliklerinde gösterilmiştir.
Bu illüstrasyonu kullanmak için sadece im @Sqlresultsetmapping 2. Parametreler olarak tanımlanan isim a Yaratıcı soru-Yöntem teslim edilir.
em.createNativeQuery("SELECT * FROM book b WHERE id = 1",
"BookMapping").getSingleResult();
Bu şekilde, yerel bir SQL sorgusunun sonucu, farklı varlıklar veya kalıcılık bağlamıyla yönetilmeyen Pojos'ta da eşlenebilir.
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 Berestasyon Sorunlarına Daha Fazla 70 Çözüm” kitabımda mevcuttur. Amazon'da cep ve e-kitap ve hibernate-tips.com'da PDF olarak mevcuttur.
()