我正在开发spring + Hibernate项目。两个实体类别和产品之间存在一对多关系,我为产品实体创建了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”,“brand”:“Apple”,“description”:“这是最优质的手机”, “单价”:10.0, “量”:2 “购物”:0, “活性”:真, “查看”:2 “类别1”:{ “ID”:2 “名称为”: “移动设备”,” description“:”这是Mobile“,”imageUrl“:”CAT_1.png“,”active“:true,”products“:[{”id“:1,”code“:”PRDABC123DEFX“,”name“ :“iphone.5s”,“品牌”:“Apple”,“描述”:“这是最优质的手机”,“unitPrice”:10.0,“数量”:2,“购买”:0,“有效”: true,“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“:”这是最优质的手机“,”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”,“description”:“这是最优质的手机”,“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, “量”: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,”有效“:真实,”查看“:2,”category1“:{”id“:2,”name“:”Mobile“,”description“:”这是Mobile的描述“,”imageUrl“:”CAT_1.png“,”active“:true ,“产品”:[{“id”:1,“代码”:“PRDABC123DEFX”,“名称”:“iphone.5s”,“品牌”:“Apple”,“描述”:“这是最优质的手机“” UNI tPrice “: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,“产品“:[{”id“:1,”代码“:”PRDABC123DEFX“,”名称“:”iphone.5s“,”品牌“:”Apple“,”描述“:”这是最优质的手机“, “单价”: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();
}
}
答案 0 :(得分:0)
您应该在category1
类中使用JsonIgnoreProperties注释忽略Product
字段以进行序列化:
@Entity
@JsonIgnoreProperties({"category1"})
public class product {
//...
}
注意:强> 类名应该(由convention)以大写字母开头。