Entity One-to-Many 排序设置

本文介绍了使用Java实现的新闻及评论实体类的ORM映射方法,并详细解释了数据库表结构的设计思路。通过实体类与数据库表之间的映射,实现了高效的数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 评论实体类,对应 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)
);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值