2010-05-25 22 views
5

Sadece hızlı bir soru:JPQL onay çok-çok ilişki

bu ilişki "dostluğu" ve onu açıklayan örneğin aynı varlığa ManyToMany ilişkisi (bağlantılıdır (örneğin Kullanıcı için) varlık var

simetriktir).

Kullanıcı A'nın B kullanıcısı bir "arkadaş" olup olmadığını kontrol etmek için yürütme süresi açısından en hızlı yol nedir? "Aptal" yol, tüm listeyi almak ve daha sonra kullanıcının var olup olmadığını kontrol etmek olurdu, ama bu açıkça belli oluyor.

Ben

İşte örnek kod var JPA 2 kullanıyorum:

@Entity 
@Table(name="users") 
public class UserEntity { 
    @ManyToMany(fetch = FetchType.LAZY) 
    private List<UserEntity> friends; 

    .... 
} 

cevap

6

sen, ne MEMBER OF kullanmayla ilgili bütün Listesini almak istemiyorsanız? Böyle bir şey:

SELECT user FROM UserEntity user WHERE :friend MEMBER OF user.friends 

size arkadaş olarak B olan tüm insanları verecekti. Sonuçları yalnızca A ile kısıtlamak isterseniz, WHERE maddesine bir koşul ekleyin.

İstediğinizi elde etmenin en iyi yolu olduğundan emin değilsiniz. "Aptal" yaklaşım aslında çok aptal görünmüyor.

+0

Teşekkürler! Bu tam ihtiyacım olan şey. Sorgunun nasıl değiştirileceğini de önerebilir misiniz: Arkadaş kimlik değil, Kurum referansı mı? Basit bir soru için özür dilerim ama JPQL'de biraz kayboldum :-) :-) – Juriy

+0

Zihin boşuna :-) zaten bulundu. – Juriy

+0

@Juriy, bulduğunuz çözümü paylaşır mısınız? – stivlo