天天看點

如何用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貼出來,一切就清楚了:

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

package  cn.tohot.grs5.po;

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

import  org.apache.commons.lang.builder.EqualsBuilder;

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

import  org.apache.commons.lang.builder.HashCodeBuilder;

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

import  org.apache.commons.lang.builder.ToStringBuilder;

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

import  org.apache.commons.lang.builder.ToStringStyle;

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

import  java.math.BigDecimal;    

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

public   class  TestDetailPO 

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

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

      private  cn.tohot.grs5.po.TestDetailPK pk ;

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

     public  cn.tohot.grs5.po.TestDetailPK getPk () 

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

{

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

         return  pk;

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

    }

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

     public   void  setPk ( cn.tohot.grs5.po.TestDetailPK pk ) 

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

{

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

         this .pk  =  pk;

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

    }

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

     private  String goods;

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

     private  BigDecimal qty;

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

     private  BigDecimal price;

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

     private  BigDecimal amt;

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

     private  String orderNo;

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

     public  String getGoods () 

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

{

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

         return  goods;

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

    }

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

     public   void  setGoods ( String goods ) 

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

{

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

         this .goods  =  goods;

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

    }

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

     public  BigDecimal getQty () 

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

{

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

         return  qty;

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

    }

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

     public   void  setQty ( BigDecimal qty ) 

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

{

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

         this .qty  =  qty;

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

    }

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

     public  BigDecimal getPrice () 

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

{

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

         return  price;

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

    }

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

     public   void  setPrice ( BigDecimal price ) 

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

{

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

         this .price  =  price;

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

    }

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

     public  BigDecimal getAmt () 

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

{

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

         return  amt;

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

    }

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

     public   void  setAmt ( BigDecimal amt ) 

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

{

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

         this .amt  =  amt;

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

    }

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

     public  String getOrderNo () 

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

{

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

         return  orderNo;

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

    }

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

     public   void  setOrderNo ( String orderNo ) 

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

{

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

         this .orderNo  =  orderNo;

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

    }

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

     public  String toString() 

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

{

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

         return  ToStringBuilder.reflectionToString( this ,

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

                ToStringStyle.MULTI_LINE_STYLE);

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

    }

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

     public   boolean  equals(Object o) 

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

{

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

         return  EqualsBuilder.reflectionEquals( this , o);

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

    }

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

     public   int  hashCode() 

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

{

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

         return  HashCodeBuilder.reflectionHashCode( this );

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

    }

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

}

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

package  cn.tohot.grs5.po;

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

import  org.apache.commons.lang.builder.EqualsBuilder;

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

import  org.apache.commons.lang.builder.HashCodeBuilder;

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

import  org.apache.commons.lang.builder.ToStringBuilder;

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

import  org.apache.commons.lang.builder.ToStringStyle;

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

import  java.io.Serializable;

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

public   class  TestDetailPK  implements  Serializable 

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

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

     // private static final long serialVersionUID ;

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

     private  Integer lineNo;

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

     private  String id;

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

     public  Integer getLineNo () 

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

{

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

         return  lineNo;

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

    }

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

     public   void  setLineNo ( Integer lineNo ) 

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

{

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

         this .lineNo  =  lineNo;

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

    }

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

     public  String getId () 

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

{

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

         return  id;

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

    }

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