【发布时间】:2017-04-15 20:48:31
【问题描述】:
我有两个对象,具有 OneToMany 自我引用的 Product 和与 Image 的 OneToMany 关系。
从一个 Rest API,我需要创建 CRUD 服务。我创建了以下服务:
添加新产品: {“名称”:“椅子”, "description":"红色椅子"}
@Path("/product/add")
@Consumes("application/json")
添加新的子产品: {“名称”:“表”, "description":"红表"}
@Path("/product/{id}/addChild")
@Consumes("application/json")
为产品添加图片:
/product/1/image/添加
{"type":"PNG"}
@Path("/product/{id}/image/add")
@Consumes("application/json")
更新产品:
/product/update/1
{"名称":"椅子", "description":"蓝色椅子"}
@Path("/product/update/{id}")
@Consumes("application/json")
更新图片:
/image/update/1
{"type":"JPEG"}
@Path("/image/update/{id}")
@Consumes("application/json")
删除产品:
/product/delete/1
@DELETE
@Path("/product/delete/{id}")
删除图片:
/图像/删除/1
@DELETE
@Path("/image/delete/{id}")
Product.java:
@Entity
@Table
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer productId;
@Column(name = "NAME")
private String name;
@Column(name = "DESCRIPTION")
private String description;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="PRODUCT_ID")
private List<Image> images;
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
private List<Product> children;
@ManyToOne
@JoinColumn(name = "PARENT_PRODUCT_ID")
private Product parent;
Image.java:
@Entity
@Table
public class Image implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer imageId;
@Column(name = "TYPE")
private String type;
@ManyToOne
@JoinColumn(name = "PRODUCT_ID", nullable = false)
private Product product;
当我尝试添加带有图片的产品时,出现错误:
{"名称":"桶", "description":"红桶", “图像”:{“类型”:“jpeg”} }
无法从 START_OBJECT 令牌中反序列化 java.util.ArrayList 的实例 在 [来源:org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@3c9786ad; line: 2, column: 27] (通过引用链: br.com.model.Product["images"])
需要帮助:
- 用一个 JSON 添加一个带图片的产品;
- 添加子产品的方式是否正确(使用PathParam)?
【问题讨论】:
标签: java json rest jersey jax-rs