如何无关联地选择数据

时间:2017-09-16 18:31:33

标签: spring spring-mvc spring-boot

我有一个名为Product的实体,它具有同一实体的外键,用于指示子产品。

我需要在两种不同情况下选择所有产品

首先,获得所有相关产品(工作) 第二,获得所有没有关系的产品(不工作)

@Entity
@Table(name = "product")
public class Product {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Integer id;

  private String name;

  private String description;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name="product_id")
  private Product parentProduct;

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public Product getParentProduct() {
    return parentProduct;
  }

  public void setParentProduct(Product parent_product_id) {
    this.parentProduct = parent_product_id;
  }

}

当我尝试

public Product getProductByIdWithoutRelation(Integer id) {
    return productRepository.findById(id);
}

使用存储库代码中的以下方法

Product findById(Integer id);

我收到了这个错误

  

.wsmsDefaultHandlerExceptionResolver:无法编写HTTP消息:org.springframework.http.converter.HttpMessageNotWritableException:无法编写JSON:没有为类org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer找到序列化程序,也没有发现要创建的属性BeanSerializer(为了避免异常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS);嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:没有为类org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer找到序列化器,也没有发现创建BeanSerializer的属性(为了避免异常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS)(通过引用链) :model.Product [" parentProduct"] - > model.Product _ $$ _ jvst726_0 [" handler"])

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你需要使用Jackson Hibernate datatype integration来处理延迟加载的关系问题,这些问题通常伴随着Jackson与Hibernate实体一起使用。您可以在不同的答案中查看here,了解如何在不同的弹簧环境中进行配置。