Pregunta

Aquí está la versión eliminada de mi código:

@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;

}

¿Se permite el código anterior?Tengo dos clases integradas de costos y artículos de artículo que estoy usando con @ElementCollection.

Problema: Cuando intento ejecutar una consulta llamada

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

Tengo un comportamiento extraño.Los registros en el segundo elementalcollection (TABLA DE ARTÍCUSTO) se están duplicando (insertados en la tabla).

¿Fue útil?

Solución

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top