Я пытаюсь заставить работать отношение 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();
}'