ManyToOne: deleteAll () и delete (объект) не работают - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь заставить работать отношение ManyToOne, все остальные отношения работают, кроме этого.Это список учетных записей, которые привязаны к человеку.

Проблемы:

-При попытке сохранить учетную запись:

Account accountSave = AccountRepository.save(account); //works

-При попытке сохранитьнесколько учетных записей:

Account accountASave = AccountRepository.save(accountA);
Account accountBSave = AccountRepository.save(accountB);
//not working: results in : Expected <2> but was:<4>

-При попытке удалить учетную запись:

Account accountSave = AccountRepository.save(account);
AccountRepository.delete(account);
//does not delete the account

Когда я пытаюсь удалить все учетные записи:

Account accountASave = AccountRepository.save(accountA);
Account accountBSave = AccountRepository.save(accountB);
AccountRepository.deleteAll();
//deleted instance passed to merge
  • Когда я пытаюсь сохранить Клерка: работает
  • Когда я пытаюсь сохранить нескольких Клерков: работает
  • Когда я пытаюсь удалить Клерка: работает
  • Когда я пытаюсь удалитьвсе клерки: работает (каждый раз используется та же стратегия, что и выше)

Я попытался поиграть с cascadeType, но безуспешно

=> изменилось: cascade = CascadeType.ALL на

cascade = {CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.REMOVE}

не решает проблему

  • добавление @Transaction к методам транзакции не решает никаких проблем
  • добавление @OnDelete(action = OnDeleteAction.CASCADE) к учетной записи также не помогает

отношение OneToMany:

@Entity
@DiscriminatorValue("B")
public class Clerk extends Werknemer {

    private String salary;

    @OneToMany(mappedBy = "clerk", cascade = CascadeType.ALL, 
        orphanRemoval = true)
    private List<Account> accounts = new ArrayList<>();
    (...)
}

отношение ManyToOne:

@Entity
@Table(name = "ACCOUNTS")
public class Account implements Serializable, Comparable<Account>{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "clerk_id")
    private Clerk clerk;

    private String text;

    (...)
}

deleteAll () & delete (объект) должен работать и сохранять 2 аккаунта ине 4, когда я пытаюсь сохранить 2 учетные записи модульного теста:

'    @Test
public void DeleteAccount() {
    Account account = new Account();
    account.setTekst("Tekst");

    Bediende bediende = new Bediende();
    bediende.setBedrijfsnaam("Bedrijfsnaam");
    bediende.setNaam("Naam");
    bediende.setVoornaam("Voornaam");
    bediende.setPersoneelsnummer(12345678);
    bediende.setSalaris("Salaris");

    Werkadres werkadres = new Werkadres();
    werkadres.setGemeente("Gemeente");
    werkadres.setHuisnummer("Huisnummer");
    werkadres.setPostcode("Postcode");
    werkadres.setStraat("Straat");

    bediende.setWerkadres(werkadres);

    account.setBediende(bediende);

    List<Account> accounts = new ArrayList<>();
    accounts.add(account);


    bediende.setAccounts(accounts);

    Account accountSave = accrep.save(account);
    accrep.delete(account);

    Iterable<Account> accountLijst = accrep.findAll();
    for (Account a : accountLijst) {
        Assert.fail();
    }
    Assert.assertTrue(true);
    accrep.deleteAll();
}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...