Spring Hibernate не правильно селектит
У меня есть метод
@GetMapping("/current")
public List<OrderDTO> getOrders(@AuthenticationPrincipal UserDetails userDetails){
User user = userService.findByEmail(userDetails.getUsername());
List<Order> orderList = orderService.getAllOrdersByUser(user);
return orderList.stream().map(OrderMapperIn.MAPPER::convertToDTO).collect(Collectors.toList());
}
Модель Order:
@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "order_id")
private int id;
@Column(name = "created_at")
private Date createdAt;
@Column(name = "total_amount")
private BigDecimal totalAmount;
@Column(name = "address")
private String address;
@ManyToOne
@JoinColumn(name = "user_id", referencedColumnName = "user_id")
private User owner;
@OneToMany(mappedBy = "product",cascade = CascadeType.ALL)
private List<OrderDetails> orderDetails;
}
Модель OrderDetails:
@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "order_details")
public class OrderDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "order_detail_id")
private int id;
@Column(name = "quantity")
private int quantity;
@Column(name = "price")
private BigDecimal price;
@ManyToOne
@JoinColumn(name = "order_id", referencedColumnName = "order_id")
private Order order;
@ManyToOne
@JoinColumn(name = "product_id", referencedColumnName = "product_id")
private Product product;
public OrderDetails(int quantity, BigDecimal price, Order order, Product product) {
this.quantity = quantity;
this.price = price;
this.order = order;
this.product = product;
}
}
Метод должен возвращать все заказы аутентифицированного пользователя. Я создал заказ Order с 2-мя OrderDetails,но orderList в дебаге видит только 1 orderDetails. В БД также 2 записи OrderDetails с одинаковыми order_id. Пробовал также делать feetch List EAGER вместо LAZY, также пробовал инициализировать явно через Hibernate.initialize(), также видело только один orderDetails.
Ответы (1 шт):
Автор решения: Starkvell
→ Ссылка
Проблема была в mappedBy = "product" поля orderDetails. Как же долго я искал ошибку, а дело было вон в чем.