`
tedeyang
  • 浏览: 326194 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何用XDoclet 1 生成Hibernate pojo 的 composite-id

阅读更多

使用   Hibernate时,可以由POJO生产出hbm.xml映射文件和数据库,前提是必须在POJO中使用XDoclet.的@Hibernate.Tags插件.(或JDK5的注解)

与XDoclet 1 不同,XDoclet 2在Codehaus.org上,

! XDoclet 2显式地支持复合主键.

简单的使用介绍在Hibernate的文档中可见:  http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#mapping-xdoclet

详细的tag说明
X1:   http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html
X2:   http://xdoclet.codehaus.org/HibernateTags



续:POJO--XDoclet 1--hbm.xml的过程中,如果表具有复合主键,标签要怎么写?

环境:MyEclipse 5.0GA中包含的XDoclet插件版本仍仅支持XDoclet 1,为了不增加额外的插件,就用它了;
解决方法纪要:
我在通用报表系统5.0设计器的开发中使用XDoclet来生成Hibernate映射文件,遇到了复合主键的问题。在具有复合主键的情况下,我的POJO采用一个主键Bean的方式加一个属性Bean的方式,(因为X1的@hinernate.id 在每个class中最多只能有一个,多于1的会自动忽略)也即“Components as composite identifiers” 方式。这方面的资料实在太少,东查西找,没有解决,又连猜带蒙,试验了几十遍才搞定了,哀啊!怎么文档这么残呢!

关于如何在Myeclipse中使用xdoclet就不提了,把两个POJO贴出来,一切就清楚了:

/**/ /*
* 此JavaBean由Genesis自动生成,请勿随意修改
* 生成时间:Tue Oct 17 13:41:53 CST 2006
*/

package  cn.tohot.grs5.po;

import  org.apache.commons.lang.builder.EqualsBuilder;
import  org.apache.commons.lang.builder.HashCodeBuilder;
import  org.apache.commons.lang.builder.ToStringBuilder;
import  org.apache.commons.lang.builder.ToStringStyle;

import  java.math.BigDecimal;    

/** */ /**
 * @hibernate.class table="detail"
 
*/

public   class  TestDetailPO 
    
/** */ /**
     * 复合主键
     
*/

     
private  cn.tohot.grs5.po.TestDetailPK pk ;
      
    
/** */ /**
     * generated by Genesis
     * @hibernate.id class="cn.tohot.grs5.po.TestDetailPK"
     
*/
    
    
public  cn.tohot.grs5.po.TestDetailPK getPk ()  {
        
return  pk;
    }

    
/** */ /**
     * generated by Genesis
     
*/
        
    
public   void  setPk ( cn.tohot.grs5.po.TestDetailPK pk )  {
        
this .pk  =  pk;
    }

    
    
/**/ /*  **** 字段 ****  */
    
private  String goods;
    
private  BigDecimal qty;
    
private  BigDecimal price;
    
private  BigDecimal amt;
    
private  String orderNo;
        
    
/** */ /**
     * generated by Genesis
     * @hibernate.property column="goods" not-null="false"  
     
*/
    
    
public  String getGoods ()  {
        
return  goods;
    }

    
/** */ /**
     * generated by Genesis
     
*/
        
    
public   void  setGoods ( String goods )  {
        
this .goods  =  goods;
    }

    
    
/** */ /**
     * generated by Genesis
     * @hibernate.property column="qty" not-null="false"  
     
*/
    
    
public  BigDecimal getQty ()  {
        
return  qty;
    }

    
/** */ /**
     * generated by Genesis
     
*/
        
    
public   void  setQty ( BigDecimal qty )  {
        
this .qty  =  qty;
    }

    
    
/** */ /**
     * generated by Genesis
     * @hibernate.property column="price" not-null="false"  
     
*/
    
    
public  BigDecimal getPrice ()  {
        
return  price;
    }

    
/** */ /**
     * generated by Genesis
     
*/
        
    
public   void  setPrice ( BigDecimal price )  {
        
this .price  =  price;
    }

    
    
/** */ /**
     * generated by Genesis
     * @hibernate.property column="amt" not-null="false"  
     
*/
    
    
public  BigDecimal getAmt ()  {
        
return  amt;
    }

    
/** */ /**
     * generated by Genesis
     
*/
        
    
public   void  setAmt ( BigDecimal amt )  {
        
this .amt  =  amt;
    }

    
    
/** */ /**
     * generated by Genesis
     * @hibernate.property column="orderNo" not-null="false"  
     
*/
    
    
public  String getOrderNo ()  {
        
return  orderNo;
    }

    
/** */ /**
     * generated by Genesis
     
*/
        
    
public   void  setOrderNo ( String orderNo )  {
        
this .orderNo  =  orderNo;
    }

    
    
/** */ /**  Overriden toString method.
     * 
@return  string
     
*/

    
public  String toString()  {
        
return  ToStringBuilder.reflectionToString( this ,
                ToStringStyle.MULTI_LINE_STYLE);
    }


    
/** */ /**  Overridden equals method.
     * 
@param  o object
     * 
@return  true/false
     
*/

    
public   boolean  equals(Object o)  {
        
return  EqualsBuilder.reflectionEquals( this , o);
    }


    
/** */ /**  Creates object hash code.
     * 
@return  int
     
*/

    
public   int  hashCode()  {
        
return  HashCodeBuilder.reflectionHashCode( this );
    }

}

 

/**/ /*
* 此JavaBean由Genesis自动生成,请勿随意修改
* 生成时间:Tue Oct 17 13:41:53 CST 2006
*/

package  cn.tohot.grs5.po;

import  org.apache.commons.lang.builder.EqualsBuilder;
import  org.apache.commons.lang.builder.HashCodeBuilder;
import  org.apache.commons.lang.builder.ToStringBuilder;
import  org.apache.commons.lang.builder.ToStringStyle;

import  java.io.Serializable;

/** */ /**
 * detail 's composite key
 
*/

public   class  TestDetailPK  implements  Serializable 
    
/** */ /**
     * TODO 请设置此处的serialVersionUID值(建议根据提示由eclipse自动生成)
     
*/

    
// private static final long serialVersionUID ;
    
    
/**/ /*  **** 主键字段 ****  */
    
private  Integer lineNo;
    
private  String id;

    
/** */ /**
     * generated by Genesis
     * @hibernate.property column="lineNo" not-null="true" length="32"
     
*/
    
    
public  Integer getLineNo ()  {
        
return  lineNo;
    }

    
/** */ /**
     * generated by Genesis
     
*/
        
    
public   void  setLineNo ( Integer lineNo )  {
        
this .lineNo  =  lineNo;
    }

    
    
/** */ /**
     * generated by Genesis
     * @hibernate.property column="id" not-null="false" 
     
*/
    
    
public  String getId ()  {
        
return  id;
    }

    
/** */ Codehighlighter1_1018_1050_
分享到:
评论

相关推荐

    Hibernate 参考文档

    - **XDoclet标记示例**:演示了如何使用XDoclet注释来辅助生成映射文件。 #### 五、O/R Mapping 基础 - **映射声明** - **Doctype**:定义映射文件的DTD。 - **hibernate-mapping**:映射文件的根元素。 - **...

    hibernate3.2中文文档(chm格式)

    5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化...

    HibernateAPI中文版.chm

    5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化...

    hibernate教程

    - **复合主键**:使用 `composite-id` 元素定义复合主键。 - **鉴别器**:`discriminator` 元素用于多表继承映射时区分不同子类。 - **版本号**:`version` 元素用于实现乐观锁。 - **时间戳**:`timestamp` 元素...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化...

    Hibernate+中文文档

    5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化...

    Hibernate中文详细学习文档

    5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化...

    Hibernate 中文 html 帮助文档

    5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化集合类...

    hibernate 体系结构与配置 参考文档(html)

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    最全Hibernate 参考文档

    5.4.1. 使用 XDoclet 标记 5.4.2. 使用 JDK 5.0 的注解(Annotation) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection ...

    hibernate 教程

    目录 <br>前言 1. 翻译说明 1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成...

    Hibernate教程

    6.4.1. 使用 XDoclet 标记 6.4.2. 使用 JDK 5.0 的注解(Annotation) 7. 集合类(Collections)映射 7.1. 持久化集合类(Persistent collections) 7.2. 集合映射( Collection mappings ) 7.2.1. 集合外键...

    Hibernate Reference Documentation3.1

    1. Introduction to Hibernate 1.1. Preface 1.2. Part 1 - The first Hibernate Application 1.2.1. The first class 1.2.2. The mapping file 1.2.3. Hibernate configuration 1.2.4. Building with Ant 1.2.5. ...

    Hibernate3的帮助文档

    6.4.1. 使用 XDoclet 标记 6.4.2. 使用 JDK 5.0 的注解(Annotation) 7. 集合类(Collections)映射 7.1. 持久化集合类(Persistent collections) 7.2. 集合映射( Collection mappings ) 7.2.1. 集合外键...

    hibernate3.04中文文档.chm

    6.4.1. 使用 XDoclet 标记 6.4.2. 使用 JDK 5.0 的注解(Annotation) 7. 集合类(Collections)映射 7.1. 持久化集合类(Persistent collections) 7.2. 集合映射( Collection mappings ) 7.2.1. 集合外键...

    Hibernate3+中文参考文档

    5.4.1. 使用 XDoclet 标记 5.4.2. 使用 JDK 5.0 的注解(Annotation) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection ...

    hibernate 框架详解

    使用 XDoclet 标记 6.4.2. 使用 JDK 5.0 的注解(Annotation) 7. 集合类(Collections)映射 7.1. 持久化集合类(Persistent collections) 7.2. 集合映射( Collection mappings ) 7.2.1. 集合外键(Collection ...

    Hibernate参考文档

    5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化集合类...

    hibernate

    目录 <br>前言 1. 翻译说明 1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成...

Global site tag (gtag.js) - Google Analytics