Я пытаюсь получить результат списка, в основном список объектов, использующих Jersey RESTful API (сервер и клиент)
UserRESTClient client = new UserRESTClient();
ClientResponse response = client.getUsersByType(ClientResponse.class, String.valueOf(userType));
List<User> participants = response.getEntity(new GenericType<List<User>>() {
});
Однако приведенный выше код не работает, если у Entity User есть составной объект, например,
public class User {
private UserId userId;
}
public class UserId {
private int id;
private int categoryId;
}
В этом случае JSON десериализуется Джерси и возвращает нуль для типа поля UserId внутри класса User. Я проверил возвращенный JSON, и все кажется хорошим на стороне RESTful Server, но вложенный ответ JSON не ясно обрабатывается на клиенте.
Любая помощь будет принята с благодарностью. Я не уверен, что это из-за препроцессора Джексона.
Ниже приводится фактический фрагмент кода. В нем участвуют два класса Участник и УчастникPK (первичные для каждого Участника).
@Entity
@Table(name = "conference_participant")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Participant.findAll", query = "SELECT p FROM Participant p"),
public class Participant implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected ParticipantPK participantPK;
}
@Embeddable
public class ParticipantPK implements Serializable {
@Basic(optional = false)
@NotNull
@Column(name = "conference_id")
private int conferenceId;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 150)
@Column(name = "participant_sip_uri")
private String participantSipUri;
public ParticipantPK() {
}
public ParticipantPK(int conferenceId, String participantSipUri) {
this.conferenceId = conferenceId;
this.participantSipUri = participantSipUri;
}
и код для получения ClientResponse,
List<Participant> participants = response.getEntity(new GenericType<List<Participant>>() {
});
Однако, ParticipantPK (Composite PK) является нулевым.