Я пытаюсь получить все переводы товаров с помощью EntityGraph. Он работает должным образом, но также получает все Lazy Fetched Entities. Объект моего продукта:
@Entity
@Table(name = "product")
@Where(clause = "status = 'ACTIVE'")
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@OneToMany(mappedBy = "product")
private Set<ProductTranslateNew> translates = new HashSet<>();
//Getters & Setters
Объект ProductTranslateNew:
@Entity
@Table(name = "product_translate_new")
public class ProductTranslateNew implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "product_name")
private String productName;
...
@Basic
@Column(name = "language")
private String language;
@ManyToOne(fetch = FetchType.LAZY)
@JsonIgnoreProperties("translates")
private Product product;
//Getters & Setters
Мой репозиторий:
@Repository
public interface ProductRepository extends JpaRepository<Product, Long>, JpaSpecificationExecutor<Product> {
@EntityGraph(attributePaths = {"images", "translates"})
@Query(value = "SELECT p " +
"FROM Product p left join p.translates t " +
"WHERE p.supplier.id = :suppId AND t.language = :lang",
countQuery = "SELECT count(p) " +
"FROM Product p left join p.translates t " +
"WHERE p.supplier.id = :suppId AND t.language = :lang")
Page<Product> getAllProductBySupplierId(@Param("suppId") Long id,
@Param("lang") String language,
Pageable pageable);
}
Когда я вызываю метод getAllProductBySupplierId, я получаю Product в Translate. Он также получает продукт. Есть ли способ не получить Entity - аннотировано с FetchType.Lazy?