之前一直在琢磨项目中的架构设计。于五一前完成了数据库详细设计和流程体系设计。本来计划的很好,五一把登陆部分写完。后面就是按部就班的一个一个模块的写就成了……可郁闷的事情发生了。哎,详情如下……
1.PowerDesigner 11设计的数据库不能生成sql执行语句:
那叫一个郁闷啊,搞了半天,一直以为是我的ODBC配置问题。后经反复查看,没问题啊?于是问题集中在PowerDesigner身上。上网搜寻了一番也是一无所获。于是乎,死马当活马医。看看最新版已经到了PowerDesigner12了。虽然没有破解版,还是下载装了。OK,批处理顺利执行。轻松完工……看来PowerDesigner11的版本确实有问题。这里记上一笔。
2.hibernate的映射死活报org.hibernate.exception.SQLGrammarException……
因为报could not load an entity:于是首先我从ORM的映射开始检查,然后是JDBC驱动(光JDBC驱动我就换了4个囧),再是hibernate jar包的完整性……,然后是最小化映射检查,即只做唯一一个表的映射。均不能解决问题……搞了整整一天,基本上baidu和gogole上的相关链接都被我搜遍了……
第二天,很无意的,发现oracle里的用户不能用条件查询了。只有insert 语句可用。让我把搜索方向转到了数据库方面。很奇怪的现象,带任何条件的查询都会报无效标识符。但字段是确实没问题的。这让我想到了oracle我设置角色的权限。在更改我的帐户为DBA后还是不能查询……百思不得其解……
第三天,又经过一个上午的白白努力,还是没有进展。我已经有重装oracle的打算了……也许是柳暗花明又一村吧。我把检查目标放在了建表上。由于我的表全是由PowerDesigner 所建立然后直接生成到数据库的,所以我把建表sql打开查看的时候发现了一个不算问题的问题——我的表名是全大写字母的,但是我的列名却是小写的。会不会是由于此问题导致oracle无法检索到字段名呢?于是drop掉所有的表,全部重新导入,Oracle能顺利条件查询了。导入项目,加上hibernate,问题全部解决。
看起来问题都是出在小地方(至今不明白为什么oracle不能识别小写字段名……),但还是让我折腾了几天,很郁闷。特此记下,引以为鉴。