diff --git a/src/main/java/ru/ulstu/is/sbapp/Post/model/Post.java b/src/main/java/ru/ulstu/is/sbapp/Post/model/Post.java index 3c48d27..6d06474 100644 --- a/src/main/java/ru/ulstu/is/sbapp/Post/model/Post.java +++ b/src/main/java/ru/ulstu/is/sbapp/Post/model/Post.java @@ -26,7 +26,7 @@ public class Post { @ManyToOne(fetch = FetchType.EAGER,cascade = CascadeType.MERGE) private User user; - @OneToMany(mappedBy = "post",fetch = FetchType.EAGER,cascade = CascadeType.MERGE) + @OneToMany(mappedBy = "post",fetch = FetchType.EAGER,cascade = CascadeType.ALL,orphanRemoval = true) private List comments=new ArrayList<>(); public Post(){} diff --git a/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryImpl.java b/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryImpl.java index 10194ba..3cf04f9 100644 --- a/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryImpl.java +++ b/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryImpl.java @@ -4,11 +4,13 @@ import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; +import ru.ulstu.is.sbapp.Comment.model.Comment; import ru.ulstu.is.sbapp.Comment.repository.CommentRepository; import ru.ulstu.is.sbapp.Post.model.Post; import ru.ulstu.is.sbapp.Post.repository.PostRepository; import ru.ulstu.is.sbapp.User.model.User; +import java.util.List; import java.util.Optional; public class UserRepositoryImpl implements UserRepositoryExtension { @@ -31,6 +33,15 @@ public class UserRepositoryImpl implements UserRepositoryExtension { em.createQuery("Delete from Comment Where user.id = :id") .setParameter("id",id) .executeUpdate(); + List posts = em.createQuery("Select p from Post p where user.id = :id",Post.class) + .setParameter("id",id) + .getResultList(); + for(var post : posts) + { + em.createQuery("Delete from Comment where post.id = :postId") + .setParameter("postId",post.getId()) + .executeUpdate(); + } em.createQuery("Delete from Post Where user.id = :id") .setParameter("id",id) .executeUpdate(); diff --git a/src/test/java/ru/ulstu/is/sbapp/JpaClientTests.java b/src/test/java/ru/ulstu/is/sbapp/JpaClientTests.java index 929a77f..014b089 100644 --- a/src/test/java/ru/ulstu/is/sbapp/JpaClientTests.java +++ b/src/test/java/ru/ulstu/is/sbapp/JpaClientTests.java @@ -69,13 +69,24 @@ public class JpaClientTests { log.info("testUserReadAllEmpty: " + users.toString()); Assertions.assertEquals(users.size(), 0); } - + @Test + void testDeletePostwithcomments() + { + final User user = userService.addUser("Pasha","Sorokin","sorokin.zxcv@gmail.com"); + final User user12 = userService.addUser("Anton","Sorokin","zxcv@gmail.com"); + userService.addNewPost(user.getId(),"text","tezt"); + final List post = postService.findAllPosts(); + final Post post1 = post.get(0); + postService.addCommentToPost(post1.getId(),user12.getId(),"Da"); + userService.deleteUser(user.getId()); + } @Test void testAddAndDeletePost() { postService.deleteAllPosts(); userService.deleteAllUsers(); final User user = userService.addUser("Pasha","Sorokin","sorokin.zxcv@gmail.com"); + final User user12 = userService.addUser("Anton","Sorokin","zxcv@gmail.com"); userService.addNewPost(user.getId(),"Text1","Text2"); //post userService.addNewPost(user.getId(),"Привет","Да"); //post1 final List posts =postService.findAllPosts();