2016-07-07 3 views
0

У меня есть простой POSO GroupACLTemplate, который я хочу сохранить. Он подклассифицирован из абстрактного класса. Я аннотированный его @Entity, а также иметь @IdMorphia не распознает мое @ID аннотированное поле

@Entity("aclTemplate") 
@SerialVersionUID(1L) 
class GroupACLTemplate(@([email protected]) id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable 

Когда я раскрываю свою войну, я не вижу какой-либо коллекции GroupACLTemplate. Я также попытался это

class GroupACLTemplate(@Id id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable 

Я добавил тестовый случай и попытался сохранения объекта, как этот

@Inject 
var aclTemplateRepository: AclTemplateRepository = _ 
aclTemplateRepository.save(aclTemplate.head) 

Погрешность говорит

NoId complained about com.java.sample.acl.GroupACLTemplate. : No field is annotated with @Id; but it is required 

Я пропускаю что-то здесь?

ответ

0

При объявлении параметров конструктора Scala отображает их в переменные private final, если мы не используем модификатор. Однако, если добавлено var, они отображаются в переменные private. Это изменение, которое я сделал. Теперь объявление класса выглядит

@Entity("aclTemplate") 
@SerialVersionUID(1L) 
class GroupACLTemplate(@([email protected]) var id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable 
0

Если вы зарегистрировали проблему в github, я могу посмотреть. Morphia работает с файлами классов, поэтому все должно «просто работать», но мы в настоящее время не тестируем классы scala, поэтому, возможно, есть что-то странное о том, как scala компилируется до байт-кода, который отбрасывает карту.

+0

[Готово] (https://github.com/mongodb/morphia/issues/960) – rockydgeekgod

+0

Спасибо. Я постараюсь кое-что сделать для вас. – evanchooly

-1

вы должны использовать Id от морфия вместо одного из весенних данных

Смежные вопросы