jpa lazy返回所有元素

时间:2015-06-26 02:34:34

标签: spring-data spring-data-jpa jpa-2.1

我有两个品牌和模特。我使用延迟加载。

@Entity
public class Brand {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long brandId;

  private String brand;

  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "brand")
  @JsonManagedReference
  private List<Model> modelList;
  ...
}

@Entity
public class Model {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long modelId;

  private String model;

  @ManyToOne
  @JoinColumn(name = "brandId")
  @JsonBackReference
  private Brand brand;
  ...
}

在我的存储库中,我使用标准方法findAll。

public interface BrandRepository extends JpaRepository<Brand, Long>

当我打电话来获得品牌

curl http://localhost:8080/brands

我也得到模特

[
   {
      “brandId”:1,       “品牌”:“丰田”,       “modelList”:
         {
            “modelId”:1,             “模式”:“回音”          },          {
            “modelId”:2,             “模式”:“花冠”          }       ]    },    {
      “brandId”:2,       “品牌”:“本田”,       “modelList”:
         {
            “modelId”:3,             “模式”:“思域”          },          {
            “modelId”:4,             “模式”:“雅阁”          }       ]    },    {
      “brandId”:3,       “品牌”:“起亚”,       “modelList”:
         {
            “modelId”:5,             “模式”:“索兰托”          }       ]    },    {
      “brandId”:4,       “品牌”:“福特”,       “modelList”:
         {
            “modelId”:6,             “模式”:“野马”          }       ]    } ]

是否缺少某些东西?

1 个答案:

答案 0 :(得分:1)

如果您想省略Brand中的模型,则应将@JsonBackReference放在modelList而不是@JsonManagedReference上。

@JsonManagedReference是引用的前向部分 - 正常序列化的部分。

@JsonBackReference是参考的后半部分 - 它将从序列化中省略。

希望这有帮助。