我正在尝试使用Child的存储库删除子实体。我不想在Parent中加载整个Child集合并从那里删除一个Child,因为在某些情况下集合很大并且可能导致内存问题。但是当我使用Parent Repository加载Parent时删除一个孩子后,我得到一个错误,上面写着"删除的实体已经传递给了#34;。
@Entity
@Table(name="USR")
public class User {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user", orphanRemoval=true)
private Set<UserApplication> userApplications = new HashSet<UserApplication>();
}
@Entity
@Table(name="USR_2_APL")
public class UserApplication {
@ManyToOne
@JoinColumn(name = "USR_SK")
private User user;
}
@Test
public void testDeleteUserApp() {
List<UserApplication> removedUserApp = userApplicationRepository.findByUserSkAndApplicationSk(1, 5);
userApplicationRepository.delete(removedUserApp);
//*****This is where I see an error that says
//org.springframework.orm.jpa.JpaObjectRetrievalFailureException: deleted entity passed to persist: [UserApplication#<null>]; nested exception is javax.persistence.EntityNotFoundException
userRepository.findByUserLoginName(loginId);
}
答案 0 :(得分:0)
我不知道这对你有帮助,但我有类似的东西,这就是我删除数据的方法......
在存储库中我有一个这样的方法: -
@Transactional
public Long deleteByByUserSkAndApplicationSk(int userSk, int applicationSk);
方法的输出是删除的行数。
然后您可以直接调用要删除的方法。