package org.springside.examples.showcase.common.entity;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.ForceDiscriminator;
/**
* 帖子基类.
*/
@Entity
@Table(name = "SS_POST")
//单表继承策略
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
//查询对象时强制加入子类标识字段
@ForceDiscriminator
public abstract class Post extends IdEntity {
protected String title;
protected String content;
protected User user;
protected Date modifyTime;
@Column(nullable = false)
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
//延时加载的Lob字段, 需要运行instrument任务进行bytecode enhancement
@Lob
@Basic(fetch = FetchType.LAZY)
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
//与用户的多对一映射
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Date getModifyTime() {
return modifyTime;
}
public void setModifyTime(Date modifyTime) {
this.modifyTime = modifyTime;
}
}