Я использую GORM для MongoDB в своем веб-приложении Grails 3 для управления чтением / записью из БД.
У меня есть следующие 2 класса домена:
class Company {
String id
}
class Team {
String id
Company company
}
Для командих компания сохраняется в БД как String, и с помощью GORM я могу просто использовать team.company
для получения экземпляра Company
класса домена.
Однако мне нужно переопределить метод получения для company
,и мне нужно необработанное значение для идентификатора компании (как хранится в БД), без вмешательства GORM и выполнения его магии.Есть ли способ получить необработанное значение String?
Любая помощь приветствуется!Заранее спасибо
Обновление (27 мая)
Изучая предложение @TaiwaneseDavidCheng, я обновил свой код до
class Company {
String id
}
class Team {
String id
Company company
String companyId
static mapping = {
company attr: "company" // optional
companyId attr: "company", insertable: false, updateable: false
}
}
Обратите вниманиечто я использую GORM для MongoDB, которая (ссылаясь на manual ) tries to be as compatible as possible with GORM for Hibernate
, но требует немного другой реализации.
Однако я обнаружил (методом проб и ошибок), что GORM для MongoDBне поддерживает подобное решение, так как кажется, что только одно свойство за один раз может быть сопоставлено со свойством документа MongoDB.
В частности, выигрывает последнее свойство в алфавитном порядке, например, companyId
в моем примере.
Я нашел способ заставить все это работать, я выкладываю свой собственный ответ ниже.