Entity One-to-Many 排序設置

/**
 * 評論實體類,對應 TCOMMENT 表。
 * @author William
 */
@Entity
@Table(name = "TCOMMENT")
public class Comment {

	/**
	 * 標識ID字段爲主鍵,主鍵生成策略爲:自動。
	 */
	@Id @GeneratedValue
	private Long id;
	private String nickname;
	private String content;
	private Integer note;
	/**
	 * 發表日期,對應 posted_date 字段,字段類型爲TIMESTAMP。
	 */
	@Column(name = "posted_date")
	@Temporal(TemporalType.TIMESTAMP)
	private Date postedDate;
	
	// Constructors, setters, getters
}

 

/**
 * 新聞實體類,對應 News表。
 * @author William
 */
@Entity
@NamedQuery(name = "findAllNews", query = "SELECT n FROM News n")
public class News {

	/**
	 * 標識ID字段爲主鍵,主鍵生成策略爲:自動。
	 */
	@Id @GeneratedValue
	private Long id;
	/**
	 * content新聞內容,該字段必填。
	 */
	@Column(nullable = false)
	private String content;
	/**
	 * comments評論,與之進行一對多關聯。<br/>
	 * FetchType.EAGER 獲取新聞時立即相關評論。<br/>
	 * CascadeType.ALL 支持所有級聯操作。<br/>
	 * OrderBy 獲取評論列表時,按照postedDate(發表日期)降序排列。
	 */
	@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
	@JoinTable(name = "NEWS_COMMENT", joinColumns = @JoinColumn(name = "NEWS_ID"),
		inverseJoinColumns = @JoinColumn(name = "COMMENT_ID"))
	@OrderBy("postedDate DESC")
	private List<Comment> comments;
	
	// Constructors, setters, getters
}

 

CREATE TABLE TCOMMENT (
	ID BIGINT,
	NICKNAME VARCHAR(50),
	CONTENT VARCHAR(500),
	NOTE INT,
	POSTED_DATE TIMESTAMP,
	PRIMARY KEY (ID)
);

CREATE TABLE NEWS (
	ID BIGINT,
	CONTENT VARCHAR(500),
	PRIMARY KEY (ID)
);

CREATE TABLE NEWS_COMMENT (
	NEWS_ID BIGINT,
	COMMENT_ID BIGINT,
	PRIMARY KEY (NEWS_ID, COMMENT_ID),
	FOREIGN KEY (NEWS_ID) REFERENCES NEWS(ID),
	FOREIGN KEY (COMMENT_ID) REFERENCES TCOMMENT(ID)
);

 

發佈了35 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章