2012-09-13 23 views
5

Hazırda bekletme durumundayım. İki tabağım var, örneğin student ve phone number ve bu iki tablonun ortak bir sütunu var, student id. Hibernate hql kullanarak bu iki tablo ile bir iç birleştirme yapmak istiyorum.Hazırda bekleyen iç birleştirmeyi kullanarak hql

student.java

{ 
    private int id; 
    private String name; 
} 

phone.java iki sınıf ile

{ 
    private int pid; 
    private int sid; //same id in student.java 
    private int phone_number; 
} 

cevap

6

the documentation yeniden okuyun. Telefondaki öğrencinin kimliğinin olmaması gerekiyor. Aksine, her iki varlıklar arasında bir ilişki var zannediyorsunuz:

public class Phone { 
    @Id 
    private Integer id; 

    private String phoneNumber; 

    @ManyToOne 
    private Student owner; 
} 
Ancak o zaman kullanmak mümkün olacak

katılır :

// selects all the phones belonging to the students named 'John' 
select phone from Phone phone where phone.owner.name = 'John' 
+0

tamam thanks..how? ? –

+0

Elbette şunları yapabilirsiniz: örneğin, phone.owner.school.country.name = 'ABD'. Bu, iyi Hazırda Bekletme belgelerinde açıklanmıştır. Oku onu. –

+0

ok teşekkürler .. bu nedenle, birçok kişi için hazırda bekletme konusundaki sorgu sonuçlarını yineleyebiliriz .. Çok çalışacağım.Ama bunu başaramıyorum. –

3

o hazırda hayatı zorlaştırıyor dernek habersiz gibi. Normal olsaydı, telefon sınıfında sid'i fiili bir Öğrenci nesnesi haline getirmek çok uyuşukluğun farkındadır. Örneğin. Bunu yaptıktan sonra basit bir HQL birleştirmesi yapabilirsiniz, örn.

FROM Phone p 
JOIN p.student s 

nesnenin ham kimliği o zaman açıkça normal bir SQL katıl gibi dernek belirtmek nerede "katılmak teta" Bir kullanabilirsiniz isteyen bazı neden yoktur Alternatif eğer. Örneğin.

FROM Phone p, Student s 
WHERE p.sid = s.id 
-3

HQL aşağıda bulabilirsiniz Telefon bir Öğrenci aittir :

SEÇ * öğrenci GELEN ST INNER JOIN phonenumber PN AÇIK ST.id = PN.id nerede ST.Name = i iki tablo daha aynı şeyi yapacak olabilir 'XXXX'in'

+0

bu hatayı alıyorum: org. hibernate.hql.ast.QuerySyntaxException: beklenmedik jeton: 1. satırın yakınında, sütun 91 – kozla13

İlgili konular