2013-07-15 38 views
8

Mặc dù câu hỏi này là về ActiveAndroid, bất kỳ ai quen thuộc với ORM đều có thể trả lời câu hỏi này.Mối quan hệ nhiều-nhiều với Android hoạt động

ActiveAndroid dường như không cung cấp cho bạn cách để thực hiện nhiều mối quan hệ ngoài hộp. Những gì tôi thấy khi tìm kiếm một giải pháp là vấn đề này GitHub: https://github.com/pardom/ActiveAndroid/issues/46

Tôi hiểu rằng nó tạo ra một cách rõ ràng bảng mối quan hệ, nhưng tôi không hiểu tại sao phần sau là nghĩa vụ phải làm bất cứ điều gì hữu ích:

public List<Foo> foos() { 
    return getMany(Foo.class, "FooBar"); 
} 
public List<Bar> bars() { 
    return getMany(Bar.class, "FooBar"); 
} 

Điều này sẽ dẫn đến truy vấn như SELECT * FROM Foo where Foo.FooBar = FooBar.Id;. Điều này sẽ trả về tối đa một hàng Foo. Tui bỏ lỡ điều gì vậy?

Bạn không cần truy vấn liên quan đến tham gia?

+0

Dưới đây là câu trả lời của tôi trên nơi nào khác: [Activeandroid Nhiều-nhiều] (http: // stackoverflow .com/questions/26207948/activeandroid-many-to-many-relationship/39203783 # 39203783) –

Trả lời

4

Hãy nói rằng bạn muốn chọn tất cả Foos cho một Bar cụ thể, bạn sẽ làm điều này:

List<Foo> foos = ((Foo) new Select().from(FooBar.class) 
       .where("Foo = ?", this.getId()) 
       .executeSingle()).foos(); 
+0

Điều này có nghĩa vụ phải đi trong Bar.java không? – Waclock

+0

@Waclock, vâng. Và tôi cho rằng, có nên được đúc thành 'FooBar'. – naXa

Các vấn đề liên quan