Я пытаюсь использовать GWT RequestFactory, чтобы (на данный момент) сделать что-то очень простое и вернуть список объектов, каждый из которых содержит некоторые данные и другой объект. Кажется, я не могу получить свой другой объект - вместо этого я всегда получаю null.
Мой код выглядит примерно так...
У меня есть несколько объектов UserMessage, каждый из которых включает объект Message.
Сообщение пользователя
@Entity
public class UserMessage implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@Version
private Integer version = 0;
@ManyToOne
@JoinColumn(name = "messageId")
private Message message;
private String user;
private int priority;
private boolean read;
private Date expiry;
private boolean sent;
... getter/setters etc
Сообщение
@Entity(name = "UUMessage")
public class Message implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@Version
private Integer version = 0;
private String title;
private String mimeType;
private String message;
private Date received;
private String fromUser;
public Message() {
}
... getter/setters etc
каждый со своими прокси-классами
Прокси-сервер UserMessage
@ProxyFor(value = UserMessage.class, locator = UserMessageLocator.class)
public interface UserMessageProxy extends EntityProxy {
Long getId();
void setId(Long id);
MessageProxy getMessage();
void setMessage(MessageProxy message);
String getUser();
}
Прокси сообщения
@ProxyFor(value = Message.class, locator = MessageLocator.class)
public interface MessageProxy extends EntityProxy {
Long getId();
void setId(Long id);
String getTitle();
void setTitle(String title);
}
У меня есть фабрика и контекст
@Service(value = CentralNotificationService.class, locator = CentralNotificationServiceLocator.class)
public interface CnsRequestContext extends RequestContext {
Request<List<UserMessageProxy>> getMessagesForUser(String user, int start, int length);
}
Когда я вызываю getMessagesForUser(...) на клиенте, мой код службы на стороне сервера вызывается, записи в базе данных извлекаются, и я получаю список UserMessageProxy, возвращаемый клиенту. К сожалению, вызов getMessage() для любого из них возвращает null, и я не могу понять, почему.
Я не получаю никаких ошибок или предупреждений. На стороне сервера я могу «видеть», что UserMessage действительно содержит объекты Message, когда код RequestFactory вызывает мои классы обслуживания.
Почему мои объекты нулевые? Есть ли условия, которые меня не удовлетворяют?
GWT 2.4 BTW (но также были проблемы с 2.3)