春季

2017-12-27 1255 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)以大寫字母開頭。