[英]Unable to select a column from an Oracle View using JPA 2 Criteria API
[英]How select column at rune time using JPA (JPQL or Criteria API)?
我在SO和網絡上進行了搜索,但找不到此問題的答案。 如何使用JPQL或JPA的Criteria API編寫以下MySQL查詢?
public String getLanguage(String language) {
String query = "SELECT i18n." + language + " AS translated FROM i18n";
}
我意識到這個特定的查詢毫無意義,但是對我來說,問題是動態選擇列。 即選擇i18n.language,在運行時選擇“語言”。
我可以想象它看起來像:
public List getLanguage(String language) {
return entityManager.createQuery(
"SELECT l.:language FROM I18n i"
).getResultList();
}
但這無法編譯。 謝謝
您無法使用參數來完成此操作,因為參數不能用於替換列名,但是您可以采用與普通SQL相似的方式來執行此操作
public List getLanguage(String language) {
return entityManager.createQuery("SELECT i." + language + " as translated FROM I18n i").getResultList();
}
編輯
用參數執行此操作的一種方法,但這並不是真正的動態解決方案,您必須對所有選項進行硬編碼
SELECT CASE WHEN :language = 'EN' THEN i.en WHEN :language = 'MK' THEN i.mk END as translated FROM I18n i"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.