2 回答

TA貢獻1744條經(jīng)驗 獲得超4個贊
您不需要在 VisitDate 類中創(chuàng)建單獨的字段“訂閱”。Hibernate 會自動創(chuàng)建一個字段來存儲訂閱 ID。代碼需要稍作改動。
@Entity
@Table(name = "subscription")
public class Subscription {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "subscription_id")
private long id;
@Column(name = "userid", nullable = false)
private String userId;
@Column(name = "saledate", nullable = false)
@Temporal(TemporalType.DATE)
private Date saleDate;
@Column(name = "finishdate", nullable = false)
@Temporal(TemporalType.DATE)
private Date finishDate;
@Column(name = "price", nullable = false)
private long price;
@Column(name = "description", nullable = false)
private String description;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "associatedSub")
private List<VisitDate> visitDates = new ArrayList<>();
}
請注意,我已將 mappedBy 屬性更改為指向上述類中的 associatedSub。
@Entity
@Table(name="visitdate")
public class VisitDate {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@Column(name = "date", nullable = false)
@Temporal(TemporalType.DATE)
private Date date;
@ManyToOne
@JoinColumn(name="subscription_id")
private Subscription associatedSub;
}

TA貢獻1803條經(jīng)驗 獲得超6個贊
您可以將單向關(guān)系用于相同目的。您只需要為特定訂閱添加訪問列表/組,您不必為特定訪問創(chuàng)建訂閱列表。供參考訪問 [Java JPA] :( https://en.wikibooks.org/wiki/Java_Persistence/OneToMany#Undirectional_OneToMany.2C_No_Inverse_ManyToOne.2C_No_Join_Table_.28JPA_2.0_ONLY.29)!
@Entity
@Table(name = "subscription")
@Proxy(lazy = false)
public class Subscription {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "subscription_id")
private long id;
@Column(name = "userid", nullable = false)
private String userId;
@Column(name = "saledate", nullable = false)
@Temporal(TemporalType.DATE)
private Date saleDate;
@Column(name = "finishdate", nullable = false)
@Temporal(TemporalType.DATE)
private Date finishDate;
@Column(name = "price", nullable = false)
private long price;
@Column(name = "description", nullable = false)
private String description;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "subscription")
private List<VisitDate> visitDates = new ArrayList<>();
}
@Entity
@Table(name="visitdate")
public class VisitDate {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private long id;
private long subscription;
@Column(name = "date", nullable = false)
@Temporal(TemporalType.DATE)
private Date date;
}
添加回答
舉報