關(guān)于@OnetoMany關(guān)系映射的排序問(wèn)題,使用注解@OrderBy
Spring里面一對(duì)多的關(guān)系可以用@OnetoMany注解來(lái)實(shí)現(xiàn)
然后在實(shí)際使用中,如果要對(duì)從屬對(duì)象按條件排序該怎么處理呢?可以用注解來(lái)實(shí)現(xiàn)的也就是@OrderBy
來(lái)看看我的這個(gè)例子
一個(gè)Product對(duì)象,里面有個(gè)OnetoMany關(guān)系對(duì)應(yīng)到多張圖片,然后我這個(gè)圖片在后臺(tái)要支持排序,所以我就在Picture這個(gè)類里面加了一個(gè)ordernum的int型字段來(lái)進(jìn)行排序標(biāo)記
@OneToMany(cascade = CascadeType.ALL,mappedBy = "product",fetch = FetchType.EAGER) private List<Picture> pictures;
然后我在取值的時(shí)候怎樣才能讓圖片按照我的要求來(lái)進(jìn)行排序呢
就是使用@OrderBy
看一下具體是怎么使用
@Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface OrderBy { /** * An <code>orderby_list</code>. Specified as follows: * * <pre> * orderby_list::= orderby_item [,orderby_item]* * orderby_item::= [property_or_field_name] [ASC | DESC] * </pre> * * <p> If <code>ASC</code> or <code>DESC</code> is not specified, * <code>ASC</code> (ascending order) is assumed. * * <p> If the ordering element is not specified, ordering by * the primary key of the associated entity is assumed. */ String value() default ""; }
通過(guò)這個(gè)注解的定義可以看出它的參數(shù)就是一個(gè)String
比如我項(xiàng)目里按照?qǐng)D片的ordernum升序排列就是@OrderBy("ordernum ASC");ordernum是字段名 ASC對(duì)應(yīng)排序方式,中間用空格隔開(kāi)
當(dāng)然也支持多個(gè)條件進(jìn)行排序,比如我要通過(guò)ordernum和id進(jìn)行,那就是@OrderBy("ordernum ASC,id ASC")
最后我的代碼
@OneToMany(cascade = CascadeType.ALL,mappedBy = "product",fetch = FetchType.EAGER) @OrderBy("ordernum ASC") private List<Picture> pictures;
Entity One-to-Many 排序設(shè)置
/** * 評(píng)論實(shí)體類,對(duì)應(yīng) TCOMMENT 表。 * @author William */ @Entity @Table(name = "TCOMMENT") public class Comment { /** * 標(biāo)識(shí)ID字段為主鍵,主鍵生成策略為:自動(dòng)。 */ @Id @GeneratedValue private Long id; private String nickname; private String content; private Integer note; /** * 發(fā)表日期,對(duì)應(yīng) posted_date 字段,字段類型為TIMESTAMP。 */ @Column(name = "posted_date") @Temporal(TemporalType.TIMESTAMP) private Date postedDate; // Constructors, setters, getters }
/** * 新聞實(shí)體類,對(duì)應(yīng) News表。 * @author William */ @Entity @NamedQuery(name = "findAllNews", query = "SELECT n FROM News n") public class News { /** * 標(biāo)識(shí)ID字段為主鍵,主鍵生成策略為:自動(dòng)。 */ @Id @GeneratedValue private Long id; /** * content新聞內(nèi)容,該字段必填。 */ @Column(nullable = false) private String content; /** * comments評(píng)論,與之進(jìn)行一對(duì)多關(guān)聯(lián)。<br/> * FetchType.EAGER 獲取新聞時(shí)立即相關(guān)評(píng)論。<br/> * CascadeType.ALL 支持所有級(jí)聯(lián)操作。<br/> * OrderBy 獲取評(píng)論列表時(shí),按照postedDate(發(fā)表日期)降序排列。 */ @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) );
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java實(shí)現(xiàn)人工智能化屏幕監(jiān)控窗口
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)人工智能化屏幕監(jiān)控窗口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09java static塊和構(gòu)造函數(shù)的實(shí)例詳解
這篇文章主要介紹了java static塊和構(gòu)造函數(shù)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握J(rèn)ava static關(guān)鍵字的函數(shù)方法,需要的朋友可以參考下2017-09-09Java通過(guò)socket客戶端保持連接服務(wù)端實(shí)現(xiàn)代碼
這篇文章主要介紹了Java通過(guò)socket客戶端保持連接服務(wù)端實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11java interface的兩個(gè)經(jīng)典用法
這篇文章主要為大家詳細(xì)介紹了java interface的兩個(gè)經(jīng)典用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09JavaWeb項(xiàng)目實(shí)戰(zhàn)之表白墻和在線相冊(cè)
這篇文章主要給大家介紹了關(guān)于JavaWeb項(xiàng)目實(shí)戰(zhàn)之表白墻和在線相冊(cè)的相關(guān)資料,JavaWeb表白墻是一款基于JavaWeb技術(shù)開(kāi)發(fā)的表白墻應(yīng)用,用戶可以在上面發(fā)布表白信息,也可以查看其他用戶的表白信息,需要的朋友可以參考下2023-03-03SpringCloud feign微服務(wù)調(diào)用之間的異常處理方式
這篇文章主要介紹了SpringCloud feign微服務(wù)調(diào)用之間的異常處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06