これが私のコードの簡素化されたバージョンです:
@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;
}
上記のコードは許可されていますか? @ElementCollection で使用している 2 つの埋め込み可能なクラス Cost と ItemLocation があります。
問題: 名前付きクエリを実行しようとすると
@NamedQuery(name = "Item.findAll", query = "SELECT i FROM Item i")
私は奇妙な振る舞いをしています。2 番目の elementcollection (ItemLccation テーブル) のレコードが 2 倍になります (テーブルに挿入されます)。