使用springboot和Entitygraph序列化对象时,如何忽略懒惰获取

时间:2019-10-15 18:40:32

标签: java spring-boot jpa

我有一个实体实体,就像这样:

@NamedEntityGraphs({
    @NamedEntityGraph(
            name = "order.grid",
            attributeNodes = {
                    @NamedAttributeNode(value = "id"),
                    @NamedAttributeNode(value = "name"),
                    @NamedAttributeNode(value = 'cars',subgraph = "cars-subgraph")
            },
      subgraphs = {
        @NamedSubgraph(
          name = "cars-subgraph",
          attributeNodes = {
            @NamedAttributeNode("cars")
          }
        )
      }
    ),
@NamedEntityGraph(
            name = "order.all",
            attributeNodes = {
                    @NamedAttributeNode(value = "id"),
                    @NamedAttributeNode(value = "name"),
                    @NamedAttributeNode(value = "houses",subgraph = "houses-subgraph"),
                    @NamedAttributeNode(value = 'cars',subgraph = "cars-subgraph")
            },
      subgraphs = {
        @NamedSubgraph(
          name = "cars-subgraph",
          attributeNodes = {
            @NamedAttributeNode("cars")
          }
        ),
@NamedSubgraph(
          name = "cars-subgraph",
          attributeNodes = {
            @NamedAttributeNode("houses")
          }
        )
      }
    )
})
    public class Order{
      private int id;
      private String name;
     @OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY)
      @JoinColumn(name="car_id")
      private List<Car> cars;
      @OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY)
      @JoinColumn(name="home_id")
      private List<House> houses;

    }

因此,当我在存储库中执行时,方法如下:

  @EntityGraph(value = "order.grid", type = EntityGraph.EntityGraphType.FETCH)

他只返回汽车,但是当springboot序列化(在我的RestController中)对象时,他也要获取房屋,并且我不想执行另一个sql,如何解决这个问题? 但是,如果我使用order.all执行entityGraph,他应该返回所有属性。

tks

0 个答案:

没有答案