春季

2017-12-27 967 views
0

使用Hibernate FetchType.Eager在Resfull API我工作的Spring + Hibernate的project.and两个Entity 类别和产品之间存在一对多的关系,我可以把问题的REST Web服务为产品实体,是孩子类别和通过使用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(); 

    } 
} 

Category类

@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, “码” :“PRDABC123DEFX”,“名称”:“iphone.5s”,“品牌”:“苹果”,“描述”:“这是最好的q uality mobile“,”unitPrice“:10.0,”quantity“:2,”purchases“:0,”active“:true,”view“:2,”category1“:{”id“:2,”name“移动“,”描述“:”这是移动描述“,”imageUrl“:”CAT_1.png“,”主动“:真,”产品“:[{”id“:1,”code“:”PRDABC123DEFX“ ,“名称”:“iphone.5s”,“品牌”:“苹果”,“描述”:“这是最好的质量手机”,“unitPrice”:10.0,“数量”:2,“购买” “active”:true,“view”:2,“category1”:{“id”:2,“name”:“Mobile”,“description”:“这是Mobile的描述”,“imageUrl”:“CAT_1。 PNG”, “主动”:真正的 “产品”:[{ “ID”:1, “代码”: “PRDABC123DEFX”, “名”: “iphone.5s”, “品牌”: “苹果”, “说明” :“这是最好的质量移动”,“单价”:10.0,“数量”:2,“购买”:0,“活跃”:真,“视图”:2,“category1”:{“id”:2 ,“name”:“Mobile”,“description”:“这是Mobile的描述”,“imageUrl”:“CAT_1.png”,“active”:true,“products”:[{“id”:1,代码“:”PRDABC123DEFX“,”名称“:”iphone.5s“,”品牌“:”苹果“,”说明“:”这是最好的质量手机“,”单价“:10.0,”数量“:2, “购物”:0“,一ctive“:true,”view“:2,”category1“:{”id“:2,”name“:”Mobile“,”description“:”这是Mobile的描述“,”imageUrl“:”CAT_1.png ”, “主动”:真正的 “产品”:[{ “ID”:1, “代码”: “PRDABC123DEFX”, “名”: “iphone.5s”, “品牌”: “苹果”, “说明”: “这是最好的质量移动”,“unitPrice”:10.0,“数量”:2,“购买”:0,“活跃”:真,“视图”:2,“category1”:{“id” “name”:“Mobile”,“description”:“这是Mobile的描述”,“imageUrl”:“CAT_1.png”,“active”:true,“products”:[{“id”:1,“code “:”PRDABC123DEFX“,”名称“:”iphone.5s“,”品牌“:”苹果“,”描述“:”这是最好的质量手机“,”单价“:10.0,”数量“:2,购买“:0,”active“:true,”view“:2,”category1“:{”id“:2,”name“:”Mobile“,”description“:”这是Mobile的描述“,”imageUrl “:” CAT_1.png “ ”主动“:真正的 ”产品“:[{ ”ID“:1, ”代码“: ”PRDABC123DEFX“, ”名“: ”iphone.5s“, ”品牌“:” 苹果“,”description“:”这是最优质的手机“,”unitPrice“:10.0,”quantity“:2,”purchases“:0,”active“:true,”view“:2,”category1“:{ “ID”:2, “名”: “手机”,“DES cription“:”这是Mobile的描述“,”imageUrl“:”CAT_1.png“,”active“:true,”products“:[{”id“:1,”code“:”PRDABC123DEFX“ :“iphone.5s”,“品牌”:“苹果”,“描述”:“这是最好的质量手机”,“单价”:10.0,“数量”:2,“购买”:0,“活跃”: true,“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“数量“:2,”购买“:0,”活跃“:真,”视图“:2,”类别1“:{”id“:2,”名称“ :“Mobile”,“description”:“这是手机的描述”,“imageUrl”:“CAT_1.png”,“active”:true,“products”:[{“id”:1,“code”:“ PRDABC123DEFX“,”名称“:”iphone.5s“,”品牌“:”苹果“,”描述“:”这是最好的质量手机“,”单价“:10.0,”数量“:2,”购买“: 0,“active”:true,“view”:2,“category1”:{“id”:2,“name”:“Mobile”,“description”:“这是Mobile的描述”,“imageUrl” CAT_1。 PNG”, “主动”:真正的 “产品”:[{ “ID”:1, “代码”: “PRDABC123DEFX”, “名”: “iphone.5s”, “品牌”: “苹果”, “说明” :“这是最优质的手机”,“单价”:10。0,“quantity”:2,“purchases”:0,“active”:true,“view”:2,“category1”:{“id”:2,“name”:“Mobile”,“description”}


这是

描述,但我想只有产品表记录

的JsonController类是

@Controller 

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


     return productDao.getAllProduct(); 
    } 



} 
+0

您未能发布productDao类的定义,该类是给出错误结果的定义。请注意,比起Java,约定是让类的名字以大写字母开头。所以,你的类应该被命名为Product,Category和ProductDao。 –

回答

0

你应该使用JsonIgnoreProperties忽略序列category1场注释在Product类:

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

    //... 

} 

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