![](/img/trans.png)
[英]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.