Cân nhắc tôi có một mô hình: Công ty 1 - N PersonGreenDAO Left Tham
Tôi muốn hiển thị một danh sách các người có tên họ và tên của công ty họ. Nhưng không phải mọi người đều có một công ty.
tôi đặt hàng để tránh điều đó mỗi cuộc gọi đến person.getCompany()
kết quả trong một truy vấn SQL mới vì vậy tôi đã suy nghĩ về việc thêm một tham gia:
QueryBuilder<Person> queryBuilder = session.getPersonDao().queryBuilder();
queryBuilder.join(PersonDao.Properties.CompanyId, Company.class);
queryBuilder.list()
Vấn đề là tôi chỉ nhận người có một công ty vì tạo truy vấn sử dụng JOIN tương đương với INNER JOIN. Tôi nghĩ tôi sẽ cần LEFT JOIN để có được những người không có một công ty.
Dường như GreenDAO không hỗ trợ LEFT JOIN ngay bây giờ. Có cách nào khác để đưa ra yêu cầu mà không cần truy vấn thô không?
Nếu bạn mở để sử dụng ORM khác, tôi có thể đề xuất JDXA ORM (http://softwaretree.com/v1/products/jdxa/jdxa.html). JDXA sẽ lấy tất cả các đối tượng Person đủ điều kiện và bất kỳ đối tượng Công ty liên quan nào. Nếu một đối tượng Công ty liên quan không tồn tại, một đối tượng Person sẽ vẫn được tìm nạp. –