【问题标题】:Hibnernate reverse engineering java.Date to sql.DateHibernate 逆向工程 java.Date 到 sql.Date
【发布时间】:2015-09-27 20:23:42
【问题描述】:

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

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

在 reveng.xml 文件中。

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

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

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

但是当我将日期映射到字符串时,似乎映射正在工作

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

我不知道我的映射有什么问题,如果我错了,请纠正我。

【问题讨论】:

  • 请添加您的 pojo 和尊敬的映射文件?对我来说有点困惑,我的理解是你试图将 DATE(oracle DB 类型)的数据放入 java.sql.Date,这是你想要做的吗?
  • 让我解释一下我的要求,我有一个列类型为日期的表。我正在使用具有上述 DB 配置的 POJOExporter 生成 POJO 类,并且 pojos 生成正常。但是在我的 pojos 中,日期字段被导入为 java.util.date,我希望日期为 java.sql.date。所以在我的 reveng xml 中我有将 java.util.date 映射到 java.sql.date,但不工作。希望你清楚。

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


【解决方案1】:

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

以下是 pojoFields.ftl 中所做的更改

<#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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 2016-06-18
    • 1970-01-01
    • 2011-07-18
    • 2015-02-11
    • 2012-07-26
    • 2011-11-17
    • 2011-07-24
    相关资源
    最近更新 更多