Search code examples
springhibernatemany-to-many

Spring cascade field not updated


I have an object with the following attribute but when I try to save the object this field is not merging. How can I solve the issue ?

@ManyToMany(targetEntity = User.class, mappedBy = "userSites", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@NotAudited
private List<IUser> localIt;

userSites:

@BatchSize(size = 20)
@ManyToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST }, fetch = FetchType.LAZY,targetEntity=Site.class)
@JoinTable(name = "USER_SITE",
joinColumns = { @JoinColumn(name = USER_ID, nullable = false) },
inverseJoinColumns = { @JoinColumn(name = "SITE_ID", nullable = false) })
private Set<ISite> userSites;

Solution

  • Instead of save the attribute :

    @ManyToMany(targetEntity = User.class, mappedBy = "userSites", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @NotAudited
    private List<IUser> localIt;
    

    I updated the site list of each users by adding the site to register into the concerned field :

    @BatchSize(size = 20)
    @ManyToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST }, fetch = FetchType.LAZY,targetEntity=Site.class)
    @JoinTable(name = "USER_SITE",
    joinColumns = { @JoinColumn(name = USER_ID, nullable = false) },
    inverseJoinColumns = { @JoinColumn(name = "SITE_ID", nullable = false) })
    private Set<ISite> userSites;