2017-10-10 101 views
1

比方說,我有這些表:映射SQL結果到Java模型

表A

col_a | 
----- 
a1 
.... 

表B

col_b | col_c | amount 
--------------------- 
a1 | b1 | 2.2 
a1 | b2 | 4.5 

表C

col_d 
---- 
b1 
b2 
.... 

所有這些表在Java中有相關的模型。

現在我想的是以下幾點:

col_a | b2 | .... 
------------ 
a1 | 4.5 |(from tableB.amount) 
..... 

查詢我現在是這樣的;

SELECT a.col_a, 
    SUM(CASE WHEN c.col_d = 'b1' THEN b.amount end) AS 'Kcal', 
    SUM(CASE WHEN c.col_d = 'b2' THEN b.amount end) AS 'Kjoule', 
    .... etc 
    FROM tableA a 
    LEFT JOIN tableB b ON b.col_b = a.col_a 
    LEFT JOIN tableC c ON b.col_c = c.col_d 
     GROUP BY a.col_a; 

導致這樣的事情:

col_a | Kcal | Kjoule 
--------------------- 
a1 | amount | amount 

這ResulSet正是我需要的,但我不能這樣映射到我在Java中的模型。我怎樣才能使用這個ResultSet來用Java來建模呢,還是我應該用不同的方法?

+0

喜米斯參閱以下鏈接可能會有所幫助。 [https://stackoverflow.com/questions/13012584/jpa-how-to-convert-a-native-query-result-set-to-pojo-class-collection](https://stackoverflow.com/questions/ 13012584/jpa-how-to-convert -a-native-query-result-set-pojo-class-collection) –

+0

@MdShareef我沒有爲這個項目使用JPA。 –

+0

您必須使用ResultSet中的getXXX()函數從ResultSet到JAVA對象進行映射 – Tuco

回答

0

您可以創建另一個實體(模型)與你的領域,是這樣的:

public class Result{ 
    private String col; 
    private BigDecimal kcal; 
    private BigDecimal kjoule; 
    ... 
    getters and setters 
} 
+0

我也在想這個,這是做這件事的好辦法嗎? –

+0

我不知道它是否被優先考慮,但它可能是一個解決方案。這也取決於您的項目的最佳做法。 – NikNik