Как удалить связь Many-tomany hibernate java

350
26 мая 2017, 12:38

Есть два класса:

package server.dao.entities;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Date;
import java.sql.Time;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "orders")
public class OrderEntity implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_order", nullable = false)
    private int idOrder;
    @Column(name = "date", nullable = true)
    private Date date;
    @Column(name = "time", nullable = true)
    private Time time;
    @ManyToOne
    @LazyCollection(LazyCollectionOption.FALSE)
    @JoinColumn(name = "id_customer", referencedColumnName = "id_customer", nullable = false)
    private CustomerEntity customer;
    @ManyToMany
    @LazyCollection(LazyCollectionOption.FALSE)
    @JoinTable(name = "order_item", joinColumns = @JoinColumn(name = "id_order"), inverseJoinColumns = @JoinColumn(name = "id_item"))
    private Set<ItemEntity> items = new HashSet<>(0);
    public OrderEntity(Date date, Time time, CustomerEntity customer, Set<ItemEntity> items)
    {
        this.date = date;
        this.time = time;
        this.customer = customer;
        this.items = items;
    }
    public OrderEntity()
    {
    }
    public Set<ItemEntity> getItems()
    {
        return items;
    }
    public void setItems(Set<ItemEntity> items)
    {
        this.items = items;
    }
    public int getIdOrder()
    {
        return idOrder;
    }
    public void setIdOrder(int idOrder)
    {
        this.idOrder = idOrder;
    }
    public Date getDate()
    {
        return date;
    }
    public void setDate(Date date)
    {
        this.date = date;
    }
    public Time getTime()
    {
        return time;
    }
    public void setTime(Time time)
    {
        this.time = time;
    }
    public CustomerEntity getCustomer()
    {
        return customer;
    }
    public void setCustomer(CustomerEntity customer)
    {
        this.customer = customer;
    }
}

Item:

package server.dao.entities;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import javax.persistence.*;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "item")
public class ItemEntity implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_item", nullable = false)
    private int idItem;
    @Column(name = "name", nullable = true, length = 45)
    private String name;
    @Column(name = "price", nullable = true)
    private Float price;
    @ManyToMany
    @JoinTable(name = "order_item", joinColumns = @JoinColumn(name = "id_item"), inverseJoinColumns = @JoinColumn(name = "id_order"))
    @LazyCollection(LazyCollectionOption.FALSE)
    private Set<OrderEntity> orders = new HashSet<>(0);
    public ItemEntity(String name, Float price)
    {
        this.name = name;
        this.price = price;
    }
    public ItemEntity()
    {
    }
    public Set<OrderEntity> getOrders()
    {
        return orders;
    }
    public void setOrders(Set<OrderEntity> orders)
    {
        this.orders = orders;
    }
    public int getIdItem()
    {
        return idItem;
    }
    public void setIdItem(int idItem)
    {
        this.idItem = idItem;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public Float getPrice()
    {
        return price;
    }
    public void setPrice(Float price)
    {
        this.price = price;
    }
}

Нужно удалить только связь в ассоциативной сущности , Пытаюсь удалить так :

    DAO<OrderEntity> DAO = new DAO<>(OrderEntity.class);
    DAO<ItemEntity> itemEntityDAO = new DAO<>(ItemEntity.class);
    OrderEntity orderEntity = DAO.readById(idOrder);
    ItemEntity itemEntity = itemEntityDAO.readById(idItem);
    orderEntity.getItems().remove(itemEntity);
    itemEntity.getOrders().remove(orderEntity);
    itemEntityDAO.update(itemEntity);
    DAO.update(orderEntity);

Но в БД , никаких изменений не происходит

READ ALSO
Не могу удалить session.delete() объекты @OneToMany связанных таблиц

Не могу удалить session.delete() объекты @OneToMany связанных таблиц

Здравствуйте коллеги! Помогите пожалуйста разобраться с проблемкойЕсть два java класса сущности (@Entity), связанные по @OneToMany:

292
Присваивание примитиву примитив

Присваивание примитиву примитив

Допустим, есть число, которое высчитывается долгим путем, нужно создать это же числоДелал всегда такое же высчитывание для второго числа

278
Как использовать Stateless Session beans в Spring?

Как использовать Stateless Session beans в Spring?

У меня есть проект на git, который я написал в рамках прохождения лабораторных работ (лаба в которой описаны задачи, функционал и тех требования)

378
Что лучше использовать EventBus или Otto?

Что лучше использовать EventBus или Otto?

Что лучше использовать EventBus или Otto?

354