Javaren就是爪洼人!

一起来研究java

常用链接

统计

最新评论

用hbm2java给pojo增加serialVersionUID的小技巧

Hibernate 3.2.x 工具中hbm2java生成的pojo类总是类似下面:
public class Child  implements java.io.Serializable {
    
private int cid;
    
private String childName;

    
public int getCid() {
        
return this.cid;
    }

    
public void setCid(int cid) {
        
this.cid = cid;
    }

    
public String getChildName() {
        
return this.childName;
    }
   
    
public void setChildName(String childName) {
        
this.childName = childName;
    }

}

但是如果你使用JDK5.0或更高版本时,总是警告该类缺少个static final long serialVersionUID,如何才能在hbm2java生成java源代码时自动加上呢?这就要修改hibernate-tools.jar中自带的pojo模板了。

首先,你将hibernate-toosl.jar中的pojo/Pojo.ftl文件解压出来,在<#if !pojo.isInterface()>的下一行增加:static final long serialVersionUID = 1L;增加后整个Pojo.ftl文件内容应该是这样:

${pojo.getPackageDeclaration()}
// Generated ${date} by Hibernate Tools ${version}

<#assign classbody>
<#include "PojoTypeDeclaration.ftl"/> {

<#if !pojo.isInterface()>
static final long serialVersionUID = 1L;

<#include "PojoFields.ftl"/>
<#include "PojoConstructors.ftl"/>
  
<#include "PojoPropertyAccessors.ftl"/>

<#include "PojoToString.ftl"/>

<#include "PojoEqualsHashcode.ftl"/>

<#else>
<#include "PojoInterfacePropertyAccessors.ftl"/>

</#if>
<#include "PojoExtraClassCode.ftl"/>

}

</#assign>

$
{pojo.generateImports()}
$
{classbody}

然后将此Pojo.ftl文件覆盖hibernate-tools.jar压缩包中的即可。

最后,再次运行你的ant,build.xml不需要修改生成的类就自动有了:static final long serialVersionUID = 1L;
呵呵,很好玩吧。我们还可以在Pojo.ftl模板文件中增加其他自己需要的代码了!

posted on 2007-12-02 13:54 Terry Lee 阅读(1378) 评论(4)  编辑  收藏 所属分类: Java技术

评论

# re: 用hbm2java给pojo增加serialVersionUID的小技巧 2007-12-02 15:13 oracle

学习下  回复  更多评论   

# re: 用hbm2java给pojo增加serialVersionUID的小技巧 2007-12-03 13:05 专注java开源

使用freemark模版看上去浅析。可以随意添加自己的东西。

freemark模版介绍资料:
http://www.agilesource.org/column_21_1.html  回复  更多评论   

# re: 用hbm2java给pojo增加serialVersionUID的小技巧 2007-12-03 13:05 专注java开源

使用freemark模版看上去浅析。可以随意添加自己的东西。

freemark以及其它开源模版介绍资料:
http://www.agilesource.org/column_21_1.html

  回复  更多评论   

# re: 用hbm2java给pojo增加serialVersionUID的小技巧 2007-12-06 21:43 西滨

static final long serialVersionUID = 1L;
加这个意义不大,这个东西本来是为了标识版本用的,都设为1L就没有什么意义了。如果是为了不想看到广告,在eclipse里设置一下就好了。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: