mysql 数据迁移至oracle, 程序查询数据遭遇oracle字段大写问题

场景:
之前系统用mysql数据库,很多数据经过hibernate如此查出

[code="java"]
public List> getAllPortalPorletItemLstUnderWorkZoneSiteByWorkZoneSiteId(
final long projectId, final long orgRoleId,
final long workZoneSiteId) {
List> list = this.hibernateTemplate
.execute(new HibernateCallback>>() {

                public List<Map<String, Object>> doInHibernate(
                        Session session) throws HibernateException,
                        SQLException {
                    List find = null;
                    String sql = "select t2.* , t1.title ,t1.showTitle, t1.type, t1.isLocal, t1.url,t1.maxUrl,t1.defaultHeight,t1.defaultWidth, t1.status "
                            + "from portal_item as t1,portal_default_workzonesite_item as t2 "
                            + "where t1.status=1 and t1.id=t2.portalItemId and t2.workZoneSiteId='"
                            + workZoneSiteId
                            + "' and t2.projectId='"
                            + projectId
                            + "' and t2.orgRoleId='"
                            + orgRoleId + "'";

                    SQLQuery query = session.createSQLQuery(sql);

                    query
                            .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                    find = query.list();

                    return find;
                }
            });
    return list;
}

[/code]

现在改为oracle之后,表字段全是大写,经过sql查出的放回Map中的key全是大写的, 这个一个Map要传递到action 甚至页面上, 之前key全是mysql中的数据字段(小写,有驼峰规则),现在全变成大写了。

请问,谁有好的解决经验,在DAO这层拿到Map时就把里面的key全转化成之前驼峰规则的key(mysql里的小写)值吗?? 您的回答,是我学习的动力,不甚感激!!

在查询的字段后面加as试试

你可以定义一个全局静态Map,保存大写->驼峰的对应关系,然后就很容易通过一个全局静态方法去适配一下,

很简单啊,让mysql忽略大小写敏感就行了,这样随便你定义什么规则,驼峰也好,马峰也好。。。。

在配置文件my.conf中mysqld字段增加lower_case_table_name=1,1为不区分大小写,0是区分大小写,然后重启mysql即可