1. 程式人生 > >One-to-Many(單向)

One-to-Many(單向)

package com.hibernate.ano;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.GenericGenerator;

/**
 * @ClassName: ReportForm.java
 *
 * @Description: 報表
 *
 * @author GERRARD
 *
 * @date 2015年1月26日下午1:56:25
 * 
 */
@Entity
@Table(name = "report_form")
public class ReportForm implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3967334816987304916L;
	
	/**
	 * 主鍵ID
	 */
	private String pid;
	
	/**
	 * 報表日期
	 */
	private Date reportDate;
	
	/**
	 * 報表人
	 */
	private String reporter;
	
	/**
	 * 報表明細
	 */
	private Set<ReportDetails> details;

	public ReportForm() {

	}

	public ReportForm(String pid, Date reportDate, String reporter,
			Set<ReportDetails> details) {
		this.pid = pid;
		this.reportDate = reportDate;
		this.reporter = reporter;
		this.details = details;
	}

	@Id
    @Column(name = "pid", unique = true, nullable = false, length = 32)
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "uuid")
	public String getPid() {
		return pid;
	}

	public void setPid(String pid) {
		this.pid = pid;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "report_date", length = 19)
	public Date getReportDate() {
		return reportDate;
	}

	public void setReportDate(Date reportDate) {
		this.reportDate = reportDate;
	}

	@Column(name = "reporter", length = 25)
	public String getReporter() {
		return reporter;
	}

	public void setReporter(String reporter) {
		this.reporter = reporter;
	}

	/**
	 * OneToMany(cascade=CascadeType.ALL)  一對多級聯操作
	 * 
	 * JoinColumn(name="reportId") 關聯明細表reportId欄位
	 * 
	 * OrderBy(value = "createDate desc") 關聯多條資料按 createDate desc 排序
	 */
	@OneToMany(cascade=CascadeType.ALL)  
    @JoinColumn(name="reportId") 
	@OrderBy(value = "createDate desc")
	public Set<ReportDetails> getDetails() {
		return details;
	}

	public void setDetails(Set<ReportDetails> details) {
		this.details = details;
	}

}

package com.hibernate.ano;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.GenericGenerator;

/**
 * @ClassName: ReportDetails.java
 *
 * @Description: 報表明細
 *
 * @author GERRARD
 *
 * @date 2015年1月26日下午2:08:16
 * 
 */
@Entity
@Table(name = "Report_details")
public class ReportDetails implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2120324671262740894L;

	/**
	 * 主鍵ID
	 */
	private String pid;
	
	/**
	 * 建立日期
	 */
	private Date createDate;
	
	/**
	 * 資料內容
	 */
	private String dataContent;
	
	/**
	 * 報表ID
	 */
	private String reportId;	

	public ReportDetails() {
		
	}

	public ReportDetails(String pid, Date createDate, String dataContent,
			String reportId) {
		this.pid = pid;
		this.createDate = createDate;
		this.dataContent = dataContent;
		this.reportId = reportId;
	}

	@Id
    @Column(name = "pid", unique = true, nullable = false, length = 32)
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "uuid")
	public String getPid() {
		return pid;
	}

	public void setPid(String pid) {
		this.pid = pid;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "create_date", length = 19)
	public Date getCreateDate() {
		return createDate;
	}

	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}

	@Column(name = "data_content", length = 255)
	public String getDataContent() {
		return dataContent;
	}

	public void setDataContent(String dataContent) {
		this.dataContent = dataContent;
	}

	@Column(name = "reportId", length = 32)
	public String getReportId() {
		return reportId;
	}

	public void setReportId(String reportId) {
		this.reportId = reportId;
	}

}