From fd9982fdcbafc592732bd40e92384cdb4ef495a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=AF=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=B2?= Date: Tue, 16 Apr 2024 13:58:32 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20fetch=20order?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data.mv.db | Bin 40960 -> 40960 bytes .../com/example/demo/DemoApplication.java | 4 ++-- .../demo/orders/model/OrderEntity.java | 5 ++--- .../orders/repository/OrderRepository.java | 3 ++- .../demo/orders/service/OrderService.java | 7 ------- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/data.mv.db b/data.mv.db index cb1368a7a8a884f373f3b9f5d4a696974b50eb5c..1d0388371d319a53945723f14d7aaa3dd69e9db3 100644 GIT binary patch literal 40960 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 T-+354!v9qh@PFsA;Q#**GmHdS literal 40960 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 diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java index cfdbe10..6ef2691 100644 --- a/src/main/java/com/example/demo/DemoApplication.java +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -67,9 +67,9 @@ public class DemoApplication implements CommandLineRunner { games.add(game2); var user1 = userService.create(new UserEntity( "login1", "email@mail.com", "qwerty123")); - // var user2 = userService.create(new UserEntity( "login2", "email@gmail.com", "qwerty1234")); + var user2 = userService.create(new UserEntity( "login2", "email@gmail.com", "qwerty1234")); orderService.create(7, new OrderEntity(user1,games)); - // orderService.create(1, new OrderEntity(user1,games)); + orderService.create(8, new OrderEntity(user2,games)); } } diff --git a/src/main/java/com/example/demo/orders/model/OrderEntity.java b/src/main/java/com/example/demo/orders/model/OrderEntity.java index 4612ee8..732317a 100644 --- a/src/main/java/com/example/demo/orders/model/OrderEntity.java +++ b/src/main/java/com/example/demo/orders/model/OrderEntity.java @@ -11,10 +11,9 @@ import com.example.demo.games.model.GameEntity; import com.example.demo.users.model.UserEntity; import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToMany; import jakarta.persistence.ManyToOne; -import jakarta.persistence.OneToMany; import jakarta.persistence.Table; @Entity @@ -25,7 +24,7 @@ public class OrderEntity extends BaseEntity{ @ManyToOne @JoinColumn(name = "userId", nullable = false) private UserEntity user; - @OneToMany(fetch=FetchType.EAGER) //cделать запрос jpa + @ManyToMany() //cделать запрос jpa private Set games = new HashSet<>(); public OrderEntity(){ diff --git a/src/main/java/com/example/demo/orders/repository/OrderRepository.java b/src/main/java/com/example/demo/orders/repository/OrderRepository.java index 14049fd..5fa9925 100644 --- a/src/main/java/com/example/demo/orders/repository/OrderRepository.java +++ b/src/main/java/com/example/demo/orders/repository/OrderRepository.java @@ -5,7 +5,7 @@ import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; - +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.PagingAndSortingRepository; @@ -16,6 +16,7 @@ public interface OrderRepository extends CrudRepository, Pagi List findByUserId(long userId); + @Query("select o from OrderEntity o join fetch o.games where o.user.id = ?1") Page findByUserId(long userId, Pageable pageable); //Можно сделать запрос на сумму JPQL diff --git a/src/main/java/com/example/demo/orders/service/OrderService.java b/src/main/java/com/example/demo/orders/service/OrderService.java index 8fd2ed9..0ef6826 100644 --- a/src/main/java/com/example/demo/orders/service/OrderService.java +++ b/src/main/java/com/example/demo/orders/service/OrderService.java @@ -6,8 +6,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - import com.example.demo.core.error.NotFoundException; import com.example.demo.orders.model.OrderEntity; import com.example.demo.orders.repository.OrderRepository; @@ -24,11 +22,6 @@ public class OrderService { this.userService = userService; } - @Transactional(readOnly = true) - public List getAll(long userId){ - userService.get(userId); - return repository.findByUserId(userId); - } @Transactional(readOnly = true) public Page getAll(long userId, int page, int size){