在Spring中使用Restful api中的Hibernate FetchType.Eager

问题描述 投票:0回答:1

我正在开发spring + Hibernate项目。两个实体Category和Product之间存在一对多的关系,我为产品实体做了restfull webservices,它是类别的子类,并且使用fetch.Eager它与父记录重复给出一条记录但是我想只得到产品记录,我不知道如何实现这一目标。

我的实体类是产品类

@Entity
public class product {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    private String code;
    private String name;
    private String brand;
    private String description;
    private Double unitPrice;
    private Integer quantity;
    private Integer purchases;
    @Column(name="is_active")
    private boolean active;
    private Integer view;
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="category_id")

    private category category1;
    @ManyToOne
    @JoinColumn(name="supplier_id")
    private User user1;
    public product() {

        this.code="PRD"+UUID.randomUUID().toString().substring(25).toUpperCase();

    }
}

分类

@Entity
public class category {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;

    private String name;
    private String description;
    @Column(name="image_url")
    private String imageUrl;
    private boolean active=true;

    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="category1")
    private List<product> products;
}

结果是

[{“id”:1,“code”:“PRDABC123DEFX”,“name”:“iphone.5s”,“品牌”:“Apple”,“description”:“这是最优质的手机”,“unitPrice” :10.0, “量”:2 “购物”:0, “活性”:真, “查看”:2 “类别1”:{ “ID”:2 “名称为”: “移动设备”, “说明”: “这是Mobile的描述”,“imageUrl”:“CAT_1.png”,“active”:true,“products”:[{“id”:1,“code”:“PRDABC123DEFX”,“name”:“iphone” .5s“,”品牌“:”Apple“,”description“:”这是最优质的手机“,”unitPrice“:10.0,”数量“:2,”购买“:0,”有效“:真实,” view“:2,”category1“:{”id“:2,”name“:”Mobile“,”description“:”这是Mobile的描述“,”imageUrl“:”CAT_1.png“,”active“: true,“products”:[{“id”:1,“code”:“PRDABC123DEFX”,“name”:“iphone.5s”,“brand”:“Apple”,“description”:“这是最好的品质移动 “ ”单价“:10.0, ”量“:2 ”购物“:0, ”活性“:真, ”查看“:2 ”类别1“:{ ”ID“:2 ”名称为“:” 移动“,”description“:”这是Mobile“,”imageUrl“:”CAT_1.png“,”active“:true,”products“:[{”id“:1,”code“:”PRDABC123DEFX“, “名”: “iphone.5s”, “品牌”:“A pple“,”描述“:”这是质量最好的手机“,”unitPrice“:10.0,”数量“:2,”购买“:0,”有效“:真实,”查看“:2,”类别1“: {“id”:2,“name”:“Mobile”,“description”:“这是Mobile的描述”,“imageUrl”:“CAT_1.png”,“active”:true,“products”:[{“ id“:1,”code“:”PRDABC123DEFX“,”name“:”iphone.5s“,”品牌“:”Apple“,”description“:”这是最优质的手机“,”unitPrice“:10.0, “quantity”:2,“purchase”:0,“active”:true,“view”:2,“category1”:{“id”:2,“name”:“Mobile”,“description”:“这是“Mobile”的描述,“imageUrl”:“CAT_1.png”,“active”:true,“products”:[{“id”:1,“code”:“PRDABC123DEFX”,“name”:“iphone.5s” ,“品牌”:“Apple”,“描述”:“这是最优质的手机”,“unitPrice”:10.0,“数量”:2,“购买”:0,“有效”:真实,“查看”: 2,“category1”:{“id”:2,“name”:“Mobile”,“description”:“这是Mobile的描述”,“imageUrl”:“CAT_1.png”,“active”:true,“产品“:[{”id“:1,”代码“:”PRDABC123DEFX“,”名称“:”iphone.5s“,”品牌“:”Apple“,”描述“:”这是最优质的手机“, “unitPr冰 “:10.0,” 量 “:2”,购物 “:0,” 活性 “:真,” 查看 “:2”,类别1 “:{” ID “:2”,名称为 “:” 移动设备 “” 说明“:”这是Mobile“,”imageUrl“:”CAT_1.png“,”active“:true,”products“:[{”id“:1,”code“:”PRDABC123DEFX“,”name“: “iphone.5s”,“品牌”:“Apple”,“描述”:“这是最优质的手机”,“unitPrice”:10.0,“数量”:2,“购买”:0,“有效”:真实,“view”:2,“category1”:{“id”:2,“name”:“Mobile”,“description”:“这是Mobile的描述”,“imageUrl”:“CAT_1.png”,“有效“:true,”products“:[{”id“:1,”code“:”PRDABC123DEFX“,”name“:”iphone.5s“,”brand“:”Apple“,”description“:”这是最优质的手机“,”unitPrice“:10.0,”数量“:2,”购买“:0,”有效“:真实,”查看“:2,”类别1“:{”id“:2,”名称“: “Mobile”,“description”:“这是Mobile的描述”,“imageUrl”:“CAT_1.png”,“active”:true,“products”:[{“id”:1,“code”:“PRDABC123DEFX “,”“名称”:“iphone.5s”,“品牌”:“Apple”,“描述”:“这是最优质的手机”,“unitPrice”:10.0,“数量”:2,“购买”:0 , “活性”:真, “查看”:2“, category1“:{”id“:2,”name“:”Mobile“,”description“:”这是Mobile的描述“,”imageUrl“:”CAT_1.png“,”active“:true,”products“: [{“id”:1,“code”:“PRDABC123DEFX”,“name”:“iphone.5s”,“品牌”:“Apple”,“description”:“这是最优质的手机”,“unitPrice” :10.0, “量”:2 “购物”:0, “活性”:真, “查看”:2 “类别1”:{ “ID”:2 “名称为”: “移动设备”, “说明”}

这是描述

但我只想要产品表记录

JsonController类是

@Controller

public class JsonController {
    @Autowired
     private  productDao productDao;
     @RequestMapping(value="/json")
     @ResponseBody
     public List<product> getAllProducts(){


         return productDao.getAllProduct();
     }



}
java spring hibernate spring-mvc
1个回答
0
投票

您应该在category1类中使用JsonIgnoreProperties批注忽略Product字段以进行序列化:

@Entity
@JsonIgnoreProperties({"category1"})
public class product { 

   //...

}

注意:类名应该(通过convention)以大写字母开头。

© www.soinside.com 2019 - 2024. All rights reserved.