4 Stimmen

Warum entfernt meine remove() nicht tatsächlich die Referenz aus der DB mit JPA @Many-to-Many

Ich habe eine ziemlich einfache JPA @ManyToMany Beziehung, die in meiner Anwendung eingerichtet wurde. A Product ist ein Teil von einem oder mehreren OrderSystem s. Jede OrderSystem können viele Product s. Es handelt sich um eine typische Many-to-many-Beziehung.

Das Problem, mit dem ich zu kämpfen habe, ist folgendes: Wenn ich orderSystems.remove() um einen Verweis aus einer Product zu einer OrderSystem wird der Eintrag (innerhalb dieser Sitzung) entfernt. Allerdings wird der Eintrag beim Flush nicht aus der Querverweistabelle entfernt, und wenn ich die Product hat es die vorherige Reihe von OrderSystem s.

Ich habe den folgenden 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;
    }
}

Kann mir jemand sagen, was ich hier übersehe?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X