solution is to use @LazyCollection(LazyCollectionOption.FALSE) instead of FetchType

This commit is contained in:
VictoriaPresnyakova 2023-04-15 18:55:45 +04:00
parent de7cc57fd4
commit ee092b86e1
5 changed files with 20 additions and 20 deletions

Binary file not shown.

View File

@ -1,7 +1,5 @@
package ru.ulstu.is.sbapp.repair.model; package ru.ulstu.is.sbapp.repair.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -18,18 +16,18 @@ public class Component {
@Column(name = "amount") @Column(name = "amount")
private Integer amount; private Integer amount;
@ManyToMany(mappedBy = "componentsList") @ManyToMany(fetch = FetchType.EAGER, mappedBy = "componentsList", cascade = CascadeType.REMOVE)
private List<Favor> favorsList; private List<Favor> favorsListFromComponents;
public Component() { public Component() {
favorsList = new ArrayList<>(); favorsListFromComponents = new ArrayList<>();
} }
public Component(String componentName, Integer amount) { public Component(String componentName, Integer amount) {
this.componentName = componentName; this.componentName = componentName;
this.amount = amount; this.amount = amount;
favorsList = new ArrayList<>(); favorsListFromComponents = new ArrayList<>();
} }
public Long getId() { public Long getId() {
@ -53,14 +51,14 @@ public class Component {
} }
public List<Favor> getFavors() { public List<Favor> getFavors() {
return favorsList; return favorsListFromComponents;
} }
public void addFavor(Favor favor) { public void addFavor(Favor favor) {
if (favorsList == null) if (favorsListFromComponents == null)
favorsList = new ArrayList<>(); favorsListFromComponents = new ArrayList<>();
if (!favorsList.contains(favor)){ if (!favorsListFromComponents.contains(favor)){
favorsList.add(favor); favorsListFromComponents.add(favor);
} }
if (!favor.getComponents().contains(this)) { if (!favor.getComponents().contains(this)) {
favor.addComponent(this); favor.addComponent(this);

View File

@ -1,6 +1,8 @@
package ru.ulstu.is.sbapp.repair.model; package ru.ulstu.is.sbapp.repair.model;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
@ -18,10 +20,11 @@ public class Favor {
@Column(name = "price") @Column(name = "price")
private Integer price; private Integer price;
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "favorsList") @ManyToMany(fetch = FetchType.EAGER)
private List<Order> ordersList; private List<Order> ordersList;
@ManyToMany //(fetch = FetchType.EAGER) @ManyToMany
@LazyCollection(LazyCollectionOption.FALSE)
private List<Component> componentsList; private List<Component> componentsList;
public Favor() { public Favor() {

View File

@ -17,10 +17,7 @@ public class Order {
@Column(name = "date") @Column(name = "date")
private Date date; private Date date;
@ManyToMany (fetch = FetchType.EAGER) @ManyToMany (fetch = FetchType.EAGER, mappedBy = "ordersList", cascade = CascadeType.REMOVE)
@JoinTable(name = "order_favor",
joinColumns = @JoinColumn(name = "order_fk"),
inverseJoinColumns = @JoinColumn(name = "favor_fk"))
private List<Favor> favorsList; private List<Favor> favorsList;
public Order(){ public Order(){

View File

@ -26,13 +26,15 @@ class SbappApplicationTests {
@Test @Test
void testOrder(){ void testOrder(){
componentService.deleteAllComponent(); componentService.deleteAllComponent();
//orderService.deleteAllOrder(); orderService.deleteAllOrder();
//favorService.deleteAllFavor(); why? favorService.deleteAllFavor();
final Favor favor = favorService.addFavor("Favor1", 100); final Favor favor = favorService.addFavor("Favor1", 100);
final Order order0 = orderService.addOrder("11.02.2023"); final Order order0 = orderService.addOrder("11.02.2023");
final Order order1 = orderService.findOrder(order0.getId()); final Order order1 = orderService.findOrder(order0.getId());
final Component component1 = componentService.addComponent("comp", 10);
favor.addComponent(component1);
Assertions.assertEquals(order0, order1); Assertions.assertEquals(order0, order1);
orderService.addFavorToOrder(order0.getId(), favor); orderService.addFavorToOrder(order0.getId(), favor);
@ -58,7 +60,7 @@ class SbappApplicationTests {
favorService.addComponentToFavor(favor0.getId(), component); favorService.addComponentToFavor(favor0.getId(), component);
Assertions.assertEquals(favorService.findFavor(favor0.getId()).getComponents().size(), 1); Assertions.assertEquals(favorService.findFavor(favor0.getId()).getComponents().size(), 1);
//Assertions.assertEquals(componentService.findComponent(component.getId()).getFavor(), favor0); Assertions.assertEquals(componentService.findComponent(component.getId()).getFavors().size(), 1);
favorService.deleteFavor(favor0.getId()); favorService.deleteFavor(favor0.getId());
Assertions.assertThrows(EntityNotFoundException.class, () -> favorService.findFavor(favor0.getId())); Assertions.assertThrows(EntityNotFoundException.class, () -> favorService.findFavor(favor0.getId()));