使用SpringJDBCTemplate在查询中动态选择字段名

使用SpringJDBCTemplate在查询中动态选择字段名,spring,dynamic,jdbc,Spring,Dynamic,Jdbc,我在用Spring JdbcTemplate替换参数时遇到问题 我有一个疑问: <bean id="fixQuery" class="java.lang.String"> <constructor-arg type="java.lang.String" value="select fa.id, fi.? from fix_ambulation fa left join fix_i18n fi

我在用Spring JdbcTemplate替换参数时遇到问题

我有一个疑问:

    <bean id="fixQuery" class="java.lang.String">
    <constructor-arg type="java.lang.String"
        value="select fa.id, fi.? from fix_ambulation fa
               left join fix_i18n fi
               on fa.translation_id = fi.id order by name" />
并将fixQuery设置为:

    <bean id="fixQuery" class="java.lang.String">
    <constructor-arg type="java.lang.String"
        value=" from telemedicina.fix_ambulation fa
               left join telemedicina.fix_i18n fi
               on fa.translation_id = fi.id order by name" />
</bean>


我的DAO扩展了SpringJDBCDAO的支持,可以很好地用于所有其他查询。我做错了什么?

我认为你不应该向任何人发送专栏信息。这是持久层的东西,不应该泄露出去


如果您想要特定于区域设置的视图,请使用Spring工具来完成这样的操作。它与如何持久化数据毫无关系。

您可以将其视为发送区域名称以接收正确的数据。无论如何,从blazeds实例调用dao,以获取flex应用程序的数据。但问题不在于区域设置或列信息。这只是关于如何让动态列名替换查询中的“?”(在本例中,它是从视图层发送的,但这并不重要)。
    public List<FixAmbulation> readFixAmbulation(String locale) throws Exception {
    String query = "select fa.id, fi." + locale.toLowerCase() + " as name " + fixQuery;
    this.log.info("QUERY : " + query);
    List<FixAmbulation> ambulations = this.getJdbcTemplate().query(
            query,
            ParameterizedBeanPropertyRowMapper
                    .newInstance(FixAmbulation.class));
    return ambulations;
}
    <bean id="fixQuery" class="java.lang.String">
    <constructor-arg type="java.lang.String"
        value=" from telemedicina.fix_ambulation fa
               left join telemedicina.fix_i18n fi
               on fa.translation_id = fi.id order by name" />
</bean>