2012-11-16 13 views
8

मेरे पास दो कक्षाएं, उपयोगकर्ता और कार हैं। दोनों में एक दूसरे के लिए बहुत से मैपिंग मैपिंग हैं।ईबीन कई बहुत सारी क्वेरी

उपयोगकर्ता:

@Entity 
public class User extends Model { 

    private int year; 

    @ManyToMany(cascade=CascadeType.ALL) 
    private List<Car> cars; 
} 

कार:

@Entity 
public class Car extends Model { 
    @ManyToMany(mappedBy = "cars", cascade=CascadeType.ALL) 
    private List<User> users; 
} 

ebean का उपयोग करना, मैं सिर्फ वर्ष 1999 से उन कारों है कि अपनी सूची में उपयोगकर्ता देना क्वेरी करने के लिए करना चाहते हैं। मैं जावा कोड में उपयोगकर्ता की कार सूची में पुन: प्रयास नहीं करना चाहता हूं।

मुझे कोई दस्तावेज नहीं मिला कि कितने प्रश्न पूछना चाहिए। तो मुझे ऐसा कुछ होगा:

public List<Car> findCars(int year, User user) { 
    return Car.find.where().eq("year", int).eq("users", user).findList(); 
} 

क्या यह ईबेन के साथ संभव है?

उत्तर

11

समान चेक question (and answer)

अधिकांश शायद अपनी खोजक तरह दिखना चाहिए:

public List<Car> findCars(int year, User user) { 
    return find.where().eq("year", year).eq("users.id", user.id).findList(); 
} 

BTW मुझे लगता है कि आप कुछ id क्षेत्र है, लेकिन सिर्फ हमें नहीं दिखा था। अपने खेतों को भी सार्वजनिक बनाएं, इसलिए आपको प्रत्येक के लिए गेटर्स/सेटर्स लिखने की आवश्यकता नहीं होगी।

+0

मैं निजी क्षेत्रों का उपयोग कर रहा था क्योंकि मुझे गेटर्स/सेटर्स के बिना परीक्षण करने में समस्याएं थीं। http://stackoverflow.com/questions/13011874/why-ebean-returns-null-for-no-reason –

+0

निजी फ़ील्ड के साथ, आपको सार्वजनिक गेटर्स लिखने की ज़रूरत है, यह सामान्य है – biesior

+0

जाहिर है :-) लेकिन मेरे लिंक टिप्पणी ईबीन/प्ले 2 कॉम्बो में बग/फीचर का वर्णन करती है जिसका मैं जिक्र कर रहा था। –

संबंधित मुद्दे