Tenho duas entidades e preciso que ao atualizar um lado, a outra lista também seja atualizada. Olhando na documentação vi que transitive persistence serve pra isso. Porém ao colocar o cascade não está funcionando. O terceito código é o teste e no system.out deveria mostrar 1, mas está mostrando 0. Alguém sabe como resolver isso ?
@Entity
@Table(name = "PRODUCT")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Product implements java.io.Serializable
{
@Id
@Column(name = "CD_PRODUCT")
@Length(max=10)
@NotNull
private String m_Code;
@Column(name = "CD_UNIT")
@Length(max=3)
private String m_UnitCode;
@Column(name= "NM_PRODUCT")
@Length(max=50)
private String m_Name;
@ManyToMany(mappedBy = "m_Products")
private List<Basket> m_Baskets;
}
@Entity
@Table(name = "BASKET")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Basket implements java.io.Serializable
{
@Column(name = "QT_MAX")
private int m_MaxQty;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="BASKET_PRODUCT",
joinColumns={@JoinColumn(name="CD_BASKET", nullable=false)},
inverseJoinColumns={@JoinColumn(name="CD_PRODUCT", nullable=false)})
private List<Product> m_Products;
}
HibernateUtil.GetSession().beginTransaction();
Product v_Product = Product.Get(p_ProductCode);
Basket v_Basket = Basket.Get(p_BasketCode);
v_Basket.add(v_Product);
System.out.println("Baskets: " + v_Product.numberOfBaskets());
HibernateUtil.GetSession().getTransaction().commit();
System.out.println("Baskets: " + v_Product.numberOfBaskets());