mümkündür?Hazırda Bekletme Ölçütleri ve Hazırlık Kriterleri ile birlikte
select A.something, B.something, C.something, D.something
from A JOIN B on A.id = B.id_fk
JOIN C ON B.id = C.id_fk
JOIN D ON C.id = D.id_fk;
mümkündür?Hazırda Bekletme Ölçütleri ve Hazırlık Kriterleri ile birlikte
select A.something, B.something, C.something, D.something
from A JOIN B on A.id = B.id_fk
JOIN C ON B.id = C.id_fk
JOIN D ON C.id = D.id_fk;
ben de aynı sorun var, ve şu şekilde çözmek başardı adres:
return criteria.createCriteria(A.class)
.createCriteria("b", "join_between_a_b")
.createCriteria("c", "join_between_b_c")
.createCriteria("d", "join_between_c_d")
.add(Restrictions.eq("some_field_of_D", someValue));
Not: kodunda "b"
, "c"
ve "d"
yukarıdaki A
, B
ve C
adları atfetme bakın karşılık gelen sınıflar (sınıf A
, b
özniteliğine sahiptir ve böyle devam eder).
Bu çözüm için, A.hbm.xml
numaranızda ayarlanacak lazy
ve fetch
parametrelerine ihtiyacınız yoktur.
Aşağıdaki SQL'e ne dersiniz ?: A.columnA1, B.columnB1, C.columnC1'i seçin. A'dan B içsel birleşimi A.fk_id = B.id içselleştirme C'nin üzerinde C.fk_id = B.id? – maximilianus
Lütfen bunun için ayrı bir soru açın. – mindas
gibi, kriterlerinde getirme moduna ayarlamayı deneyin:
criteria.setFetchMode(..., FetchMode.EAGER)
Bu join sorgusu oluşturur. Daha fazla bilgiyi here bulabilirsiniz.
Hibernate Reference material'da, dış birleştirmeyle ilişkilendirmeleri getirmek için setFetchMode'u kullanan bazı iyi örnekler vardır.
bir örnek: ayrıca size yararlı olabilecek information there about different fetching stragies yoktur
List books = sess.createCriteria(Book.class)
.setFetchMode("chapters", FetchMode.EAGER)
.setFetchMode("reviews", FetchMode.EAGER)
.list();
.
Aslında bu benim için çalışmadı, gönderdiğim cevapta olduğu gibi yapmak zorundaydım. Bunun nedeni, "D" üzerinde ek bir ölçüt vardı. – mindas
Evet, aslında birçok Bunu yapmanın yolu vardır:
http://stackoverflow.com/questions/8726396/hibernate-criteria-join-with-3-tables size yardımcı olabilir verdiğimiz bağlantıdaki Üstü . –