我使用java持久性來保存與另一個實體關聯的實體列表。以下是我遇到問題的簡要說明。堅持使用複合鍵的元素列表
@Entity public class Offer implements Serializable {
@Id private Long offerId;
@OneToMany
@Column List<OfferCategory> offerCategories;
}
@Entity public class OfferCategory implements Serializable {
@Embeddable public static class Id implements Serializable
{
@Column(name="offer_id")
private Long offerId;
@Column(name="category_id")
private Long categoryId;
public Id() {}
public Id(Long offerId, Long categoryId) {
this.offerId = offerId;
this.categoryId = categoryId;
}
public boolean equals(Object o) {
if(o != null && o instanceof Id) {
Id other = (Id) o;
return this.offerId.equals(other.offerId) &&
this.categoryId.equals(other.categoryId);
}
else
return false;
}
public int hashCode() {
return offerId.hashCode() + categoryId.hashCode();
}
}
@EmbeddedId private Id id = new Id();
}
從本質上講,由於架構我不能改變,我需要分類的列表保存爲被分配到報價。
現在,我得到用戶的類別列表,然後將它們放入Offer的offerCategories字段。但是,這對於新商品無效,因爲我無法設置新商品的ID。
我是JPA和Seam的新手,所以如果有人能在正確的方向給我一個微調,將不勝感激。
但是,如果他們都是優惠的子女,並且我爲他們分配了一個類別,那麼不應該能夠在爲新優惠分配新ID的同時填寫該ID嗎? – 2009-08-29 00:26:09