2013-01-12 60 views
5

我有表A,B,C,D,E和我在做內部連接。
我只需要結果中的部分數據。例如,我需要A.name列,D.phoneNumber列。ORMLite - 如何處理加入的結果

我使用的方法join()

我該如何處理結果?我是否應該瀏覽所有課程,以獲取我需要的所有數據?如果是,那麼做一個簡單的方法是什麼,因爲經歷所有這些似乎有點複雜。

我應該創建一個類只是結果,不管怎樣的結果映射到了嗎?

回答

8

按照ORMlite文檔,您只能使用連接語句通過異物場連接的表。

所以第一個方法,因爲我看到它是用異物和retreive你需要的所有值。例如,如果你查詢你的表A和B

QueryBuilder<A, Integer> aqb = aDao.queryBuilder(); 
QueryBuilder<B, Integer> bqb = bDao.queryBuilder(); 
List<A> results = aqb.join(bqb).query(); 

for (A a : results){ 
    String name = a.getName(); 
    String phone = a.getB().getPhone(); 
} 

,而A和B類看起來是這樣的:

.... 
public class A{ 
.... 
    @DatabaseField 
    private String name; 

    @DatabaseField(foreign = true, foreignAutoRefresh = true) 
    private B b; 
....   
    public B getB(){ 
     return b; 
    } 
.... 
    public String getName(){ 
     return name; 
    } 
} 

.... 
public class B{ 
.... 
    @DatabaseField 
    private String phone; 

    public String getPhone(){ 
     return phone; 
    } 
} 

我不知道究竟該代碼將工作,我只是想來形容這個想法。

據我所知,你可以爲多個表一次無法查詢。

查看related ORMLite documentation。 從庫的版本4.42開始支持加入語句。

+0

所以你說的話是basicly,我要高度重視剛剛通過所有的類A,B,C,d,E,我應該檢索什麼clasess我需要的價值? 如果是的話,那麼我會說,創建自定義SQL並不使用ORM會更好。 – Peter

+1

一般 - 是的。 ORMlite是一個輕量級庫,可以簡化大多數常用的sql操作。對於你正在做的事情更容易使用SQL請求,檢索光標,並通過它。 – rus1f1kat0R

+0

足夠公平的幫助 – Peter