我有一些數據包含定義給定請求當前處於什麼狀態(例如未決,批准拒絕等)的STATE
字段(字符串/文本)並獲得從該列中的所有唯一值,我可以運行下面的TSQL查詢Spring Data JPA Distinct - 從單個列返回結果
SELECT DISTINCT STATE FROM CALLOUT_REQUEST
其中CALLOUT_REQUEST
是我的表名和STATE
是返回類似領域:
州
- 批准
- 否認
- 未決
- ...
但是我不明白我怎麼會把它轉換成一個查詢在我的倉庫,因爲它似乎我需要一個「通過「聲明或其他一些過濾機制,我可以得到基於?STATE
?
我想要返回的東西 - 如上面的原始TSQL查詢所示 - 是某種List或Array對象,其中包含所有STATE
字段中的所有唯一/不同值。
因此,在僞代碼,我認爲我找的是這樣的:
String[] states = repository.findDisinctState();
其中findDistinctState()
會再回到各種各樣的數組。
希望是有道理的 - 我對Java和Spring一般都很陌生,所以我想我缺少一些概念性知識來利用上述。
UPDATE:
「國家」的概念是關閉的,所以我可以實現,作爲一個枚舉 - 唯一的問題是我不知道該怎麼做:)虐待看看我怎麼能做到這一點,因爲我認爲它完全符合我想要實現的目標。
我從提供的查詢中獲得的列表旨在用於獲取所有出現次數。我有這個代碼之前得到一個總數爲每個「州」的:
Map stats = new HashMap();
String[] states = {"approved", "denied", "pending", "deactivated"};
for (int i = 0; i < states.length; i++) {
stats.put(states[i], repository.countByState(states[i]));
}
我在理解是正確的,我在上面的代碼片斷狀態Array
也可以變成一個枚舉,然後我甚至不需要定製@Query
了?
我已經更新了這個問題,爲什麼我最初詢問自定義查詢以表明我需要使用它來收集返回的Distinct值的計數。 –
我沒有看到創建枚舉的問題。只需使用所有可能的值創建一個:https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html 然後在該枚舉類型的「CalloutRequest」下創建一個字段。最後,將其標註爲:@Enumerated(EnumType.String) http://tomee.apache.org/examples-trunk/jpa-enumerated/README.html –
事實上,這是我的第一個Java應用程序是問題,我根本不知道該怎麼做,但謝謝你澄清。 –