Hi gang,
I have a pretty simple JPA @ManyToMany
relationship set up in my application. A Product
is a part of one or more OrderSystem
s. Each OrderSystem
can have many Product
s. It's a typical many-to-many relationship.
The problem I'm fighting with is this: If I use orderSystems.remove()
to remove a reference from a Product
to an OrderSystem
, the entry appears to be removed (within that session). However, the entry isn't removed from the cross-reference table on flush, and when I reload the Product
it has the previous set of OrderSystem
s.
I have the following code:
@Entity
@Table(name = "p_product_versions")
@Validation
public class Product {
private List<OrderSystem> orderSystems;
@ManyToMany
@JoinTable(name = "p_order_systems_has_product_versions",
joinColumns =
@JoinColumn(name = "p_product_versions_prod_version_id"),
inverseJoinColumns =
@JoinColumn(name = "p_order_systems_system_id"))
public List<OrderSystem> getOrderSystems() {
return orderSystems;
}
}
@Entity
@Table(name = "p_order_systems")
@Validation
public class OrderSystem {
private List<Product> products;
@ManyToMany (mappedBy = "orderSystems")
public List<Product> getProducts() {
return products;
}
}
Can anyone point me at what I'm missing here?