でそれを見つけることができません:削除されたエンティティは、関連するエンティティのリストにあるが、私は次のコードを持っているリポジトリ
私は、関連するエンティティのリストでエンティティを削除見ることができるのはなぜ@Transactional
public void delete(String id) {
PersonEntity personEntity = personRepository.findOne(id);
//has one address with ID = 10
personEntity.getAddresses().stream().forEach(address -> addressRepository.delete(address.getId()));
PersonEntity personEntity2 = personRepository.findOne(id);
// not empty - I can see that are existing one address with ID = 10
personEntity2.getAddresses();
// ID = 10, but here is null
addressRepository.findOne(10);
}
が、私は使用findOne
このID
の場合、メソッドはnull
を返しますか?
私はアドレスを削除した後に 'findOne'と呼んだ。 'PersonEntity personEntity2 = personRepository.findOne(id); ' – ByeBye
アドレスリストはまだ空ではないので、あなたの答えが正しいかどうか分かりません – ByeBye
あなたは' PersonEntity personEntity2 = personRepository.findOne(id) 'をどこで呼びましたか? 'delete'メソッドの中では、アドレスはデータベースから削除されず、人はJPAコンテキスト内で変更されません(参照先アドレスのみが削除されます)。 。 トランザクションがコミットされた後で呼び出された場合、エンティティマネージャセッションが閉じられているかどうかによって異なります。そうでなければ、entitymanager.refresh()を試してください。もしそうなら、新しいセッションを開き、再度 'personRepository.findOne(id)'を呼び出します。 –