2014-12-04 57 views
0

我需要寫在ORMLite獲取來自多個表ormlite

以下查詢
SELECT * FROM T1 t1, T2 t2 where t1.id = t2.id AND t1.type='abc' AND (t1.title = 'XYZ' OR t2.description = 'xyz'); 

不過到目前爲止,我已經能夠寫出下面的代碼數據:

QueryBuilder<T1, Integer> t1QB = getT1Dao().queryBuilder(); 
QueryBuilder<T2, Integer> t2QB = getT2Dao().queryBuilder(); 
t1QB.join(t2QB); 
Where<T1, Integer> where = t1QB.where(); 
where.eq("Type", "abc"); 
where.and().or(
    where.ne("title", "XYZ"), 
    where.ne("description", "xyz"), 
); 

但是,這將引發異常列不在T1中找到「描述」。 而且T1中有T2對象,並且@DatabaseField註釋中的autoRefresh爲true。

是否有任何方式與上面的方法做,或者我必須編寫自定義查詢

回答

1

對於患有同樣的問題

我已經解決了這個問題,在查詢變化

SELECT * FROM T1 WHERE type='abc' AND (title = 'XYZ' OR id IN (SELECT id from T2 where description = 'xyz')); 


QueryBuilder<T1, Integer> t1QB = getT1Dao().queryBuilder(); 
QueryBuilder<T2, Integer> t2QB = getT2Dao().queryBuilder(); 
t2QB.where().eq(id, id); 

Where<T1, Integer> where = t1QB.where(); 
where.or(
    where.ne("title", "XYZ"), 
    where.in("id", t2QB); 
); 
where.and().eq("Type", "abc");