@MaxLich
java developer

Как работать с коллекцией связанных сущностей (их изменение не требуется)?

Здравствуйте. Есть две сущности (политики паролей и группы):
@Entity
@Table(name = "sys_password_policy", schema = "oauth")
public class SysPasswordPolicyEntity implements Serializable {
    private Long policyId;
    private String policyName;
    private Set<SysGroupEntity> sysGroupsByPolicyId;
// ...

    @OneToMany(mappedBy = "sysPasswordPolicyByPasswordPolicyId", fetch = FetchType.LAZY)
    public Set<SysGroupEntity> getSysGroupsByPolicyId() {
        return sysGroupsByPolicyId;
    }

    public void setSysGroupsByPolicyId(Set<SysGroupEntity> sysGroupsByPolicyId) {
        this.sysGroupsByPolicyId = sysGroupsByPolicyId;
    }
}

@Entity
@Table(name = "sys_group", schema = "oauth")
public class SysGroupEntity implements Serializable {
    private Long groupId;
    private String groupName;
    private SysPasswordPolicyEntity sysPasswordPolicyByPasswordPolicyId;

//...

    @ManyToOne
    @JoinColumn(name = "password_policy_id", referencedColumnName = "policy_id")
    public SysPasswordPolicyEntity getSysPasswordPolicyByPasswordPolicyId() {
        return sysPasswordPolicyByPasswordPolicyId;
    }

    public void setSysPasswordPolicyByPasswordPolicyId(SysPasswordPolicyEntity sysPasswordPolicyByPasswordPolicyId) {
        this.sysPasswordPolicyByPasswordPolicyId = sysPasswordPolicyByPasswordPolicyId;
    }
}

Нужно, чтобы:
  • При создании политики можно было ей назначить какие-то группы (группы при этом не должны создаваться, и у них не должны обновляться никакие поля, кроме sysPasswordPolicyByPasswordPolicyId)
  • При обновлении политики можно было удалить из списка группа, а также добавить её из списка (при этом не нужно, чтобы группы удалялись из базы, создавались в базе, и не нужно, чтобы у них в базе обновлялись все поля, кроме sysPasswordPolicyByPasswordPolicyId; нужно, чтобы при удалении из списка значение поля sysPasswordPolicyByPasswordPolicyId становилось null, при добавлении - этому полю присваивалась ссылка на текущую группу)

Как обычно решаются такие задачи? (вроде ситуация стандартная, и часто встречается)

P.S. Пытался искать в интернете, но по моей ситуации сложно что-то найти, а по связанным общим темам пока ничего не нашёл.
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы