項目中使用實體之間存在一對多@OneToMany,多對一@ManyToOne的映射關系,怎么設置呢?
GitHub地址:https://github.com/AngelSXD/myagenorderdiscount可以查看完整項目
下面給一個例子:
類似於一個部門對應多個員工
這里給出 一個流水賬單對應多條訂單折扣信息
流水賬單類:

package com.agen.orderdiscount.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; import java.util.Date; import java.util.List; /** * 流水賬單 * 請求提現以后,被記錄在流水賬單 * @author SXD * @date 2018/1/16 */ @Data(staticConstructor = "of") @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) @Entity @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator" ) public class RunningAccount { /** * 賬單ID */ @Id @GeneratedValue(generator = "uuid2") @Column(length = 36) private String raId; /** * 流水賬單編號 */ @Column(nullable = false,length = 100) private String raSn; /** * 流水金額 */ @Column(nullable = false,precision = 10,scale = 2) private Double raAccount; /** *流水賬時間 */ @Column(nullable = false) private Date raDate; /** * 流水賬單 狀態 * 1 請求提現 * 2 通過提現請求,提現成功 * 3 拒絕提現請求,提現失敗 * 4 通過部分提現請求中的訂單,拒絕部分提現請求中的訂單 * */ @Column(nullable = false) private Integer accountStatus; /** * 操作來源 */ @Column(nullable = false,length = 20) private String raOperater; /** * 流水備注1 */ @Column(length = 500) private String ratCre1; /** * 流水備注2 */ @Column(length = 500) private String ratCre2; /** * 關聯子集流水賬單 * 例如:本次提現 涉及到哪些訂單,這些訂單分別對應哪些可提現的流水 * * mappBy表示關系被維護端,只有關系端有權去更新外鍵。 * 這里還有注意OneToMany默認的加載方式是賴加載。當看到設置關系中最后一個單詞是Many,那么該加載默認為懶加載 */ @OneToMany(cascade = {CascadeType.REFRESH,CascadeType.MERGE},mappedBy = "parentRa",fetch = FetchType.EAGER) private List<AvAmount> childAvamounts; }
訂單折扣信息類:

package com.agen.orderdiscount.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; import java.util.Date; /** * 可提現金額 * 報告完成,訂單完結 從預估金額存入可提現金額 * @author SXD * @date 2018/1/16 */ @Data(staticConstructor = "of") @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) @Entity @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator" ) public class AvAmount { /** * 可提現ID */ @javax.persistence.Id @GeneratedValue(generator = "uuid2") @Column(length = 36) private String Id; /** * 本次轉入可提現金額 */ @Column(nullable = false,precision = 10,scale = 2) private Double avAccount; /** * 本條可提現金額記錄 狀態 * 1 可提現 * 2 請求提現,正在等待處理 * 3 已經成功轉賬,提現成功 * 4 不滿足提現條件,被拒絕提現請求的 * */ @Column(nullable = false) private Integer amountStatus; /** * 本次轉入時間 */ @Column(nullable = false) private Date avDate; /** * 訂單ID */ @Column(nullable = false) private Integer orderId; /** * 訂單編號SN */ @Column(nullable = false,length = 20) private String orderSn; /** * 機構ID */ @Column(nullable = false) private Integer adminId; /** * 產品ID */ @Column(nullable = false) private Integer productId; /** * 會員ID */ @Column(nullable = false) private Integer memberId; /** * 采樣包ID */ @Column(nullable = false) private Integer cybId; /** * 操作來源 */ @Column(nullable = false,length = 20) private String avOperater; /** * 可提現金額備注1 */ @Column(length = 500) private String avCre1; /** * 可提現金額備注2 */ @Column(length = 500) private String avCre2; /** * 關聯流水賬單記錄 * * 這里設置JoinColum設置了外鍵的名字,Available是關系維護端 */ @ManyToOne(cascade = {CascadeType.MERGE,CascadeType.REFRESH}) @JoinColumn(name="parentRa") private RunningAccount parentRa; }