使用hibernate注解,如何标识一个属性非数据库的字段。
就是说一个实体类对应了一张表,但是这个实体类中有一个属性不对应表中的字段,这个怎么办???

解决方案 »

  1.   

    @Transient
        可选
        @Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.
        如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic
        示例:
        //根据birth计算出age属性
        @Transient
        public int getAge() {
           return getYear(new Date()) - getYear(birth);
        }
      

  2.   

    package com.ruanko.model.ad;import java.io.Serializable;import sun.nio.cs.HistoricallyNamedCharset;import com.ruanko.model.BaseObject;
    /**
     * 
     * @author tianyucheng
     * @hibernate.class
     * table="AD_HOME"
     *
     */
    @SuppressWarnings({ "unchecked", "serial" })
    public class AdHome extends BaseObject implements Serializable, Comparable<AdHome> {

    /**
     * 深色字
     */
    public static Long AD_TYPE_DARK = Long.valueOf(2);

    /**
     * 浅色字
     */
    public static Long AD_TYPE_LIGHT = Long.valueOf(1);

    /**
     * adhomeCacheName(缓存名称)
     */
    public static String ADHOME_CACHENAME="AdHome"; /** identifier field */
    private Long adId; //广告id

    private String adContent; //广告内容

    private String adContentEncoded; //广告内容辅助字段

    private Long adOrder; //广告序号

    private Long adType; //广告字体类型(1浅色 2.深色)

    /**
     * @hibernate.id generator-class="sequence" type="java.lang.Long" column="ad_id"
     * @hibernate.generator-param name="sequence" value="seq_adhome"
     * 
     */
    public Long getAdId() {
    return adId;
    } public void setAdId(Long adId) {
    this.adId = adId;
    } /**
     * @hibernate.property column="ad_content" length="1000" not-null="true"
     * 
     */
    public String getAdContent() {
    return adContent;
    } public void setAdContent(String adContent) {
    this.adContent = adContent;
    } /**
     * @hibernate.property column="ad_order" length="10" not-null="false"
     * 
     */
    public Long getAdOrder() {
    return adOrder;
    } public void setAdOrder(Long adOrder) {
    this.adOrder = adOrder;
    }
    /**
     * @hibernate.property column="ad_type" length="2" not-null="false"
     * 
     */
    public Long getAdType() {
    return adType;
    } public void setAdType(Long adType) {
    this.adType = adType;
    } @Override
    public boolean equals(Object o) {
    // TODO Auto-generated method stub
    return false;
    } @Override
    public int hashCode() {
    // TODO Auto-generated method stub
    return 0;
    } public int compareTo(AdHome o) {
    if(this.getAdOrder() > o.getAdOrder()) {
    return 1;
    } else if(this.getAdOrder() < o.getAdOrder()) {
    return -1;
    }
    return 0;
    } public String getAdContentEncoded() {
    if(adContent != null) {
    this.adContentEncoded = this.adContent;
    this.adContentEncoded = this.adContentEncoded.replaceAll("'", "\\\\'");
    this.adContentEncoded = this.adContentEncoded.replaceAll("\r", "");
    this.adContentEncoded = this.adContentEncoded.replaceAll("\n", "");
    }
    return adContentEncoded;
    } public void setAdContentEncoded(String adContentEncoded) {
    this.adContentEncoded = adContentEncoded;
    }

    }
      

  3.   

    package com.ruanko.model.ad;import java.io.Serializable;import sun.nio.cs.HistoricallyNamedCharset;import com.ruanko.model.BaseObject;
    /**
     * 
     * @author tianyucheng
     * @hibernate.class
     * table="AD_HOME"
     *
     */
    @SuppressWarnings({ "unchecked", "serial" })
    public class AdHome extends BaseObject implements Serializable, Comparable<AdHome> {

    /**
     * 深色字
     */
    public static Long AD_TYPE_DARK = Long.valueOf(2);

    /**
     * 浅色字
     */
    public static Long AD_TYPE_LIGHT = Long.valueOf(1);

    /**
     * adhomeCacheName(缓存名称)
     */
    public static String ADHOME_CACHENAME="AdHome"; /** identifier field */
    private Long adId; //广告id

    private String adContent; //广告内容

    private String adContentEncoded; //广告内容辅助字段

    private Long adOrder; //广告序号

    private Long adType; //广告字体类型(1浅色 2.深色)

    /**
     * @hibernate.id generator-class="sequence" type="java.lang.Long" column="ad_id"
     * @hibernate.generator-param name="sequence" value="seq_adhome"
     * 
     */
    public Long getAdId() {
    return adId;
    } public void setAdId(Long adId) {
    this.adId = adId;
    } /**
     * @hibernate.property column="ad_content" length="1000" not-null="true"
     * 
     */
    public String getAdContent() {
    return adContent;
    } public void setAdContent(String adContent) {
    this.adContent = adContent;
    } /**
     * @hibernate.property column="ad_order" length="10" not-null="false"
     * 
     */
    public Long getAdOrder() {
    return adOrder;
    } public void setAdOrder(Long adOrder) {
    this.adOrder = adOrder;
    }
    /**
     * @hibernate.property column="ad_type" length="2" not-null="false"
     * 
     */
    public Long getAdType() {
    return adType;
    } public void setAdType(Long adType) {
    this.adType = adType;
    } @Override
    public boolean equals(Object o) {
    // TODO Auto-generated method stub
    return false;
    } @Override
    public int hashCode() {
    // TODO Auto-generated method stub
    return 0;
    }
    }