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定义为指向我们新定义的类,才能够完全解决这个问题。
本文介绍了解决在使用Spring Roo + Hibernate + MySQL架构下,调用存储过程时遇到的“NoDialectMappingForJDBCType:0”错误的方法。通过自定义Hibernate方言并更新配置文件,使得Hibernate能够正确处理NULL类型的值。
746

被折叠的 条评论
为什么被折叠?



