But I stay with a doubt:
I have this situation:
public class Package(){
@OneToOne(cascade=CascadeType.PERSIST)
private Product product;
@OneToOne(cascade=CascadeType.PERSIST)
private User user;
..
}
When I try to session.save(package)
, an error occurs.
I don't want to save product and package. I just want to initialize and set them into my package object.
Is that possible?
Cascading is a feature in Hibernate, which is used to manage the state of the mapped entity whenever the state of its relationship owner (superclass) affected. When the relationship owner (superclass) is saved/ deleted, then the mapped entity associated with it should also be saved/ deleted automatically.
Cascade Type PERSIST propagates the persist operation from a parent to a child entity. When we save the person entity, the address entity will also get saved.
The meaning of CascadeType. ALL is that the persistence will propagate (cascade) all EntityManager operations ( PERSIST, REMOVE, REFRESH, MERGE, DETACH ) to the relating entities. It seems in your case to be a bad idea, as removing an Address would lead to removing the related User .
See the hibernate documentation which is very clear on this issue. For instance you could use e.g.,
@Cascade(CascadeType.PERSIST)
private List<Object> obj;
or
@OneToMany(cascade = CascadeType.PERSIST)
private List<Object> obj;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With