日期:2014-05-16  浏览次数:20447 次

petclinic(compass+jdbc+mysql版)配置笔记
首先希望版主删除我前2天发的帖子:compass+jdbc+mysql跑自带例子petclinic报错。帖子提问的有误,实属垃圾,呵呵。

由于compass自带的petclinic例子中jdbc数据访问层的数据库使用的是hsql db(至发帖时也没有jdbc+mysql的例子),本人照猫画虎终于跑起来compass+jdbc+mysql版的petclinic,配置见下面。由于把例子刚跑起来,也没有看compass的源码(内力有限,呵呵),很可能还有别的错误,大家就不要吝啬手中的鸡蛋石头了:)

环境:
tomcat:5.0.28 zip
mysql:5.1.22-rc-community(发帖时最新)
mysql驱动:connectorj 5.1.5(发帖时最新)


配置:
1??petclinic(jdbc+hsql版)的配置请参考文档。


2??修改jdbc.properties中的jdbc.url,我的是:jdbc:mysql://localhost:3306/petclinic?generateSimpleParameterMetadata=true。
要增加generateSimpleParameterMetadata=true参数,compass自动更新索引时(ResultSetJdbcGpsDevice [line: 337] - performMirroring())只有generateSimpleParameterMetadata=true时才行,否则会抛“java.sql.SQLException: Parameter metadata not available for the given statement”,因为mysql驱动默认generateSimpleParameterMetadata=false(参考ConnectionPropertiesImpl类953行).这里有2个方法解决,修改compass源码,或增加这个参数(笨人首选后者)

3??修改applicationContext-jdbc.xml中selectQuery,versionQuery中的sql(4处)。
举一个说明:我把原来针对hsql的“COALESCE(t.version, convert('1970-01-01', timestamp)) as type_version”改成
“cast(coalesce(t.version,cast('2000-1-21' as datetime)) as datetime) as type_version”。
这里的sql有点长,应该有好的写法。

至此,OK啦!先试试,插入数据后搜索速度嗖嗖的

还有一点小问题:搜索结果页面中点owner链接有问题,我还没来的及看,不过这个不影响

最后希望各位看看我的有什么问题,说说自己用compass的体会,谢谢!