Предполагая, что мой комментарий - это проблема, с которой вы сталкиваетесь,
Для вашего случая у вас должно быть две отдельные версии вашей темы и вопроса.
Один набор - DTO (Объект передачи данных), в то время как другой набор является постоянным набором классов.Классы DTO SubjectDTO и QuestionDTO классы скомпилированы GWT и отправляются в браузер и из него с помощью сервисных вызовов. QuestionDTO содержит введенный Вопрос и имя выбранной темы из переключателей в виде простых строк.Когда пользователь щелкает, чтобы сохранить вопрос, вы звоните в службу поддержки и отправляете QuestionDTO на сервер.Затем сервер выполняет поиск субъекта в базе данных findByName, извлекает из БД фактическую ранее существующую запись SubjectPersistent и помещает ее в новую QuestionPersistent вместе с фактической строкой, представляющей вопроспользователь вошел и сохраняет его.Таким образом, вы сослались на существующую тему - для нее при сохранении вопроса создается фактический внешний ключ.
Выберите любую схему именования для DTO и классов Persistant (я назвал их Models and Domains)но в конечном итоге они должны будут быть отдельными, так как ваше приложение становится все более сложным.