我在这里搜索过所以和网络,但没有找到这个问题的答案。如何使用JPQL或JPA的标准API编写以下MySQL查询?
public String getLanguage(String language) {
String query = "SELECT i18n." + language + " AS translated FROM i18n";
}我意识到这个特定的查询是没有意义的,但是对我来说问题是动态地选择列。在运行时选择'language‘的位置选择i18n.language。
我可以想象它看起来像:
public List getLanguage(String language) {
return entityManager.createQuery(
"SELECT l.:language FROM I18n i"
).getResultList();
}但这不能编译。谢谢
发布于 2015-01-20 10:07:09
您不能用参数来完成它,因为参数不能用来替换列名,但是您可以使用类似于在普通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"https://stackoverflow.com/questions/28042505
复制相似问题