您好,登錄后才能下訂單哦!
這篇文章主要介紹Spring里面一對多的關系如何使用注解實現,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
然后在實際使用中,如果要對從屬對象按條件排序該怎么處理呢?可以用注解來實現的也就是@OrderBy
一個Product對象,里面有個OnetoMany關系對應到多張圖片,然后我這個圖片在后臺要支持排序,所以我就在Picture這個類里面加了一個ordernum的int型字段來進行排序標記
@OneToMany(cascade = CascadeType.ALL,mappedBy = "product",fetch = FetchType.EAGER) private List<Picture> pictures;
然后我在取值的時候怎樣才能讓圖片按照我的要求來進行排序呢
就是使用@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 ""; }
通過這個注解的定義可以看出它的參數就是一個String
比如我項目里按照圖片的ordernum升序排列就是@OrderBy("ordernum ASC");ordernum是字段名 ASC對應排序方式,中間用空格隔開
當然也支持多個條件進行排序,比如我要通過ordernum和id進行,那就是@OrderBy("ordernum ASC,id ASC")
@OneToMany(cascade = CascadeType.ALL,mappedBy = "product",fetch = FetchType.EAGER) @OrderBy("ordernum ASC") private List<Picture> pictures;
/** * 評論實體類,對應 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) );
以上是“Spring里面一對多的關系如何使用注解實現”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。