data service 架构:spring Roo + hibernate+mysql
在调用stored procedure的时候,出现:No Dialect mapping for JDBC type:0
通过反编译java.sql.Types.java得知type:0 对应于NULL
原因是java中的java.sql.Types中定义了NULL的解
析,但是hibernate 的dialect不能够支持,在使用spring roo 配置项目的时候,使用的,使用的jpa为hibernate, 那么默认的persistent.xml中有一行为:
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
这个是用来定义hibernate的dialect,我们可以重新实现这个dialect然后重新给这个value赋值:
然后将persistent.xml中的这个属性,改成 MysqlDialect class所在的位置就ok了
这样就能够使 hibernate支持NULL type的类型值了。
除此之外,我们还需要进一步做修改,在定义sessionFactory的applicationContext.xml中,也需要将Dialect定义为指向我们新定义的类,才能够完全解决这个问题。