2016-01-08 21 views
4

我在我的數據庫中有一個小特例,我需要從兩個不同的表中獲取數據,這些表有一對一的關係,以獲得有用的結果。取指令看起來是這樣的:如何在jOOQ中獲取連接表結果?

SELECT 
    time_period.from_day, time_period.to_day, store_time_period.valid_for_days 
FROM time_period, store_time_period 
WHERE 
    -- .. condition 

當然我使用JOIN在我的實際代碼 - 這只是一個例子。我的問題是如何以及如何將jOOQ中的提取數據寫入POJO。我不知道是否有辦法讓jOOQ爲我生成這個POJO,但是如果我必須自己寫這個POJO,我假設我需要類似適配器的東西,就像org.jooq.Converter作爲數據類型的轉換器一樣。

我看到存在RecordMapperProvider的可能性,但這似乎只處理單個已知的表。

那麼,用jOOQ來完成這樣的事情的最好方法是什麼?

回答

1

您可以在不需要適配器或轉換器的情況下獲取(非生成的)POJO。有關示例,請參閱jOOQ聯機文檔中的this page

jOOQ將根據查詢名稱將查詢中的列映射到POJO字段。名稱不必與列名完全匹配; DefaultRecordMapper文檔有some examples,顯示如何忽略下劃線和大寫。

就你而言,你正在創建POJO來獲取這些結果。因此,您可以將POJO字段命名爲與查詢列相同。但是,如果名稱必須是不同的,你可以使用JPA註解來告訴jOOQ這列就擺在每個字段:

@Column(name = "TITLE") 
public String myTitle; 

(如果這還不夠好,還有其他至少有兩種方法做到這一點:你可以使用構造函數,或者將結果提取到HashMap中)。

相關問題