Hibnernate逆向工程java.Date到sql.Date

时间:2015-07-09 12:41:48

标签: hibernate hibernate-mapping reverse-engineering hibernate-tools

在逆向工程过程中,我要求将DATE对象的类型更改为SQL Date,为此我添加了

<sql-type jdbc-type="DATE" hibernate-type="java.sql.Date">      </sql-type>

在reveng.xml文件中。

但在我的pojos中,Date类型仍然是java.util.Date。

即使我在方言中添加了相同内容,但没有运气

registerHibernateType(Types.DATE, java.sql.Date.class.getName());

但是当我将Date映射到String时,似乎映射正在运行

<sql-type jdbc-type="DATE" hibernate-type="java.lang.String">       </sql-type>

我的地图没有问题,如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

我通过扩展pojoFields.ftl文件解决了这个问题。 hjonate在逆向工程过程中使用pojoFields.ftl文件来生成java类的java字段。

以下是pojoFields.ftl

中所做的更改

&lt;# - //字段 - &gt;

<#foreach field in pojo.getAllPropertiesIterator()>
<#if pojo.getMetaAttribAsBool(field, "gen-property", true)>
<#if pojo.hasMetaAttribute(field, "field-description")>    /**
${pojo.getFieldJavaDoc(field, 0)}
*/
</#if>
<#assign javaType = pojo.getJavaTypeName(field, jdk5)>
<#if javaType?has_content && javaType == "Date" >
${pojo.getFieldModifiers(field)} java.sql.Date ${field.name}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitialization(field, jdk5)}</#if>;
<#else>
${pojo.getFieldModifiers(field)} ${pojo.getJavaTypeName(field, jdk5)} ${field.name}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitialization(field, jdk5)}</#if>;
</#if>
    </#if>
</#foreach>