Существует однонаправленный ManyToMany
отображение между Role
и Privilege
с Role
как владеющим объектом, как такHibernate Однонаправленного ManyToMany Update Target Учредительной связь
Role
@Entity
public class Role extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "role_id")
private Integer roleId;
@Size(max = 45)
@Column(name = "role")
private String role;
@JoinTable(name = "role_privilege", joinColumns = {
@JoinColumn(name = "role_role_id", referencedColumnName = "role_id")}, inverseJoinColumns = {
@JoinColumn(name = "privilege_privilege_id", referencedColumnName = "privilege_id")})
@ManyToMany(
cascade = {
CascadeType.DETACH,
CascadeType.MERGE,
CascadeType.REFRESH,
CascadeType.PERSIST }, fetch = FetchType.EAGER, targetEntity = Privilege.class)
private Collection<Privilege> privilegeCollection;
@Transient
private Collection<Privilege> parentPrivilegeCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "roleId")
@JsonIgnore
private Collection<User> userCollection;
public Role() {
}
//getters,setter,hashcode,equals removed for brevity
}
Privilege
@Entity
public class Privilege extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "privilege_id")
private Integer privilegeId;
@Size(max = 45)
@Column(name = "name")
private String name;
@Size(max = 150)
@Column(name = "description")
private String description;
@Size(max = 45)
@Column(name = "friendly_name")
private String friendlyName;
@JoinTable(name = "privilege_hierachy", joinColumns = {
@JoinColumn(name = "parent_privilege", referencedColumnName = "privilege_id")}, inverseJoinColumns = {
@JoinColumn(name = "child_privilege", referencedColumnName = "privilege_id")})
@ManyToMany
private Collection<Privilege> privilegeCollection;
public Privilege() {
}
}
Проблемой
Всякий раз, когда я устанавливаю обновленный список привилегий в роли и обновлении, таблица соединений успешно обновляется, не удаляя ни целевой, ни собственный объект, и это желаемый результат. Проблема заключается в обновлении, это также влияет на другую таблицу самоподключения в Privilege
под названием privilege_hierachy
, которая не является ожидаемой.
Возможно ли спящий режим обновить только отношения между мною и многими другими без изменений.
Spring Data JPA используется для сохраняемости данных
, пожалуйста, добавьте метод, в котором вы выполняете обновление. –
Spring Data Jpa репозиторий используется для сохранения данных. –