別のエンティティに関連付けられているエンティティのリストを保存するために 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();
}
基本的に、変更できないアーキテクチャのため、オファーに割り当てられているカテゴリのリストを保存する必要があります。
現在、ユーザーからカテゴリのリストを取得し、それらをオファーの offerCategories フィールドに入れています。ただし、新しいアイテムの ID を設定する方法がないため、これは新しいオファーでは機能しません。
私は JPA と Seam を初めて使用するので、誰かが正しい方向に向けて微調整してくれれば、非常にありがたいです。