Rozważmy Mam model: Company 1 - N OsobaGreenDAO Lewy Dołącz
chcę, aby wyświetlić listę osób wraz z ich nazwami i nazwę firmy. Ale nie każda osoba ma firmę.
I aby uniknąć że każde wywołanie person.getCompany()
wyników w nowym zapytaniu SQL więc myślałem o dodanie dołączyć:
QueryBuilder<Person> queryBuilder = session.getPersonDao().queryBuilder();
queryBuilder.join(PersonDao.Properties.CompanyId, Company.class);
queryBuilder.list()
Problemem jest to, że dostanę osoby z firmy tylko dlatego, że generowany zapytanie używa JOIN, które jest równoważne INNER JOIN. Myślę, że potrzebowałbym LEFT JOIN, aby również pozyskać osoby bez towarzystwa.
Nie wydaje GreenDAO obsługuje LEFT JOIN teraz. Czy istnieje inny sposób na zrobienie wniosku bez wykonania surowego zapytania?
Jeśli jesteś otwarty na używanie innej ORM, mogę zasugerować JDXA ORM (http://softwaretree.com/v1/products/jdxa/jdxa.html). JDXA pobierze wszystkie kwalifikowane obiekty Person i wszelkie powiązane obiekty firmy. Jeśli powiązany obiekt firmy nie istnieje, obiekt Person nadal będzie pobierany. –