JPA2:エンティティで複数の@ElementCollectionを使用できますか?

StackOverflow https://stackoverflow.com/questions/9525721

  •  15-11-2019
  •  | 
  •  

質問

これは私のコードの除去されたバージョンです:

@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つの埋め込み型のクラスのコストとアイテムが割り当てられています。

発行: 名前付きクエリを実行しようとする

@NamedQuery(name = "Item.findAll", query = "SELECT i FROM Item i")
.

私は奇妙な行動を持っています。2番目のElementCollection(itemlccationテーブル)のレコードが2倍になります(テーブルに挿入されます)。

役に立ちましたか?

解決

What it comes to JPA 2.0, your code is allowed. It is perfectly legal to have more than one collections that are annotated with ElementCollection. Also, it most likely does not have anything to do with problem you have. By the way, to find out is that really your problem, had you tried your code without costs collection?

In which point exactly duplicates in this collection occur first time? If ItemLocation does not define equals&hashcode, duplicates can easily come as result of adding items by yourself.

Possibly you are facing this problem: Primary keys in CollectionTable and chancing type to list and adding @OrderColumn will help.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top