Я уже часами изучаю эту проблему, возможно, просто, но я ее больше не понимаю:
У меня есть сущность (Param), которая отображается в json через jax-rs.Сущность ссылается на другую сущность (шаг).Когда я пишу / читаю json, я не хочу видеть всю пошаговую сущность, а просто ее идентификатор, поэтому я использую этот код:
@Entity
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Param implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
long id;
@Column(name = "KEYNAME")
String key;
String value;
@XmlIDREF
Step step;
}
Отлично работает для маршаллинга.-request показывает мне что-то следующее:
{id: 1,
key: "a",
value: "b",
step: 53
}
Но когда я публикую некоторый параметр на сервере, он не может отобразить числовой идентификатор шага-сущности.
Мне нужно предоставить unmarshaller собственный IDResolver.Но как я могу настроить unmarshaller ????Сервлет Jax-RS делает сортировку для меня.Мой код выглядит так:
@Path("param")
public class ParamRepresentation {
/**
* Retrieves representation of an instance of ParamRepresentation
* @return an instance of Param
*/
@GET
@Produces("application/json")
@Path("{ID}")
public Param getJson(@PathParam("ID") long id) {
return (Param) ctr.find(id, Param.class);
}
@PUT
@Path("{ID}")
@Consumes("application/json")
@Produces("application/json")
public SuccessMessage updateStep(@PathParam("ID") long id, Param p) {
ctr.update(p);
ParamSuccessMessage sm = new ParamSuccessMessage();
sm.setSuccess(true);
sm.setParam(p);
return sm;
}
}
Так как я могу настроить unmarshaller ?????