частичное обновление существующего объекта приводит к ошибке в API остальных - PullRequest
0 голосов
/ 15 марта 2019

У меня есть требование частичного обновления объекта с помощью rest api в весенней загрузке приложения, но я получаю сообщение об ошибке. Ниже приведен код

Субъект счета

@Data
@Entity
@Table(name = "accounts")
@EqualsAndHashCode(callSuper = true)
public class Account implements Serializable {

    private Integer tcgId;

    private String emailAddress;

    @Transient
    private String password;

    private String passwordHash;

    @Transient
    List<ClientCategory> categories;

    @NotNull
    @ApiModelProperty(required = true)
    @Enumerated(EnumType.STRING)
    private AccountType type;

    @NotEmpty
    @ApiModelProperty(required = true)
    private String firstName;

    @NotEmpty
    @ApiModelProperty(required = true)
    private String lastName;

    private Boolean active = false;

    @NotNull
    @ApiModelProperty(required = true)
    @Enumerated(EnumType.STRING)
    private PhoneContactPreference phoneContactPreference;

    private String profilePictureUrl;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
    @JoinColumn(name = "accountId", nullable = false)
        private List<AccountRole> accountRoles;

    @OneToMany(orphanRemoval = true, cascade = CascadeType.ALL)
    @JoinColumn(name = "accountId", nullable = false)
    private List<AccountPhoneNumber> phoneNumbers;

    public enum AccountType {
        ACCOUNT, CONTACT
    }

    public enum PhoneContactPreference {
        CALL, TEXT;
    }
}

Ниже моя сущность AccountRole

@Data
@Entity
@Table(name = "accountRoles")
public class AccountRole {

    @Id
    private Integer id;

    @ManyToOne
    @JoinColumn(name = "role")
    private StretchRole role;

    private Integer clientId;

}

Ниже приведен код для обновления учетной записи

Account currentAccount=accountService.getAccountById(account.getId());
            currentAccount.setAccountRoles(account.getAccountRoles());
            currentAccount.setPhoneContactPreference(account.getPhoneContactPreference());
            currentAccount.setFirstName(account.getFirstName());
            currentAccount.setLastName(account.getLastName());
return accountService.save(currentAccount);

Когда я запускаю этот код, я получаю ошибку ниже

Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance:accountRoles

Если я напрямую вызываю метод save для учетной записи, он просто отлично работает, но переопределяет другие значения с нулем / ложью, которых нет в объекте Account.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...