初识项目之公共父类

//话不多说,直接上代码

//为了公用,创建了一个共同的父类. baseInfo

public abstract class BaseInfo {
    /**
     * 逻辑键
     * */
    private Long id;
    /**
     * 详细信息
     */
    private RichText richText;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    @OneToOne(fetch = FetchType.LAZY, cascade = { javax.persistence.CascadeType.ALL })
    @Cascade({ org.hibernate.annotations.CascadeType.ALL })
    @JoinColumn(name = "richtext_id")
    public RichText getRichText() {
        return richText;
    }
    public void setRichText(RichText richText) {
        this.richText = richText;
    }
}

需要对同一个实体对象进行关联的所以类都继承这个父类

被共同关联的实体对象

package com.yyb.business.info.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Table;

import org.hibernate.annotations.Any;
import org.hibernate.annotations.AnyMetaDef;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.MetaValue;

import com.vanda.core.content.Content;
import com.vanda.core.web.BaseEntity;

/**
 * 富文本.
 * 
 * @author yhy
 *
 * @version 1.0
 */
@Entity
@Table(name = "rich_text")
public  class RichText extends BaseEntity {

    /** 标识. */
    private Long id;
    /** 实体类*/
    private BaseInfo content;
    /** 内容*/
    private String text;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public  Long getId() {
        return id;
    }
    public  void setId(Long id) {
        this.id = id;
    }
    @Any(metaColumn = @javax.persistence.Column(name = "meta_value"))
    @AnyMetaDef(idType = "long", metaType = "string", metaValues = {
            @MetaValue(targetEntity = Information.class, value = Information.META_VALUE)
             })
    @JoinColumn(name = "content_id")
    @Fetch(FetchMode.SELECT)
    public Content getContent() {
        return content;
    }

    public void setContent(Content content) {
        this.content = content;
    }
    @Column(name = "text")
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
}

接下来是多种关联的实体对象,需要继承共同父类

package com.yyb.business.info.domain;




import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;



import com.vanda.core.content.Content;
/**
 * 图文信息.
 * @author yhy
 *
 */
@Entity
@Table(name = "information")
public class Information extends BaseInfo implements Content {
    //这里的这个常量是可以存入被共同关联的实体类里面的字段,用来区分的
    public static final String META_VALUE="information";

    //这个实体对象里面可以写各自的字段



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值