1
這裏是我的代碼的精簡版本:JPA2:我們可以在實體中使用多個@ElementCollection嗎?
@Entity
public class Item implements Serializable{
@Id
@GeneratedValue
private long id;
@ElementCollection(fetch=FetchType.EAGER ,targetClass=Cost.class)
@CollectionTable(name="ItemCost", joinColumns = {@JoinColumn(name="itemId")})
private Set<Cost> costs= new HashSet<Cost>();
@ElementCollection(fetch=FetchType.EAGER ,targetClass=ItemLocation.class)
@CollectionTable(name="ItemLocation", joinColumns = {@JoinColumn(name="itemId")})
private Set<ItemLocation> itemLocations;
}
允許在上面的代碼?我有兩個可嵌入類Cost和ItemLocation,與@ElementCollection一起使用。
問題: 當我試圖運行一個名爲查詢
@NamedQuery(name = "Item.findAll", query = "SELECT i FROM Item i")
我有奇怪的行爲。第二個元素集合(ItemLccation表)中的記錄正在翻倍(插入到表中)。
謝謝我沒有添加任何數據到成本集合嘗試,我仍然有位置的問題。所以我的問題與多元素集合無關。當我試圖查詢該項目時,我得到重複項。對於每次查找,它都會將項目位置中的記錄加倍。我不理解您對equals和hashcode的評論。 ItemLocation沒有Id,因爲它是Embeddable。對於我正在使用的@GeneratedId – 2012-03-02 18:06:35
添加@OrderColumn已經解決了這個問題。雖然我不明白關於equals和hashcode的建議。你能否用一個例子來說明一個沒有主鍵的Embeddable類的含義?謝謝你的幫助。 – 2012-03-02 20:20:20