Здесь я предполагаю, что у вас есть полный контроль над InterfaceClass и для требуемого имущества он имеет методы получения и установки заявленным.
Итак, предположим, вы хотели бы иметь два свойства с именем: имя и описание в вашем классе интерфейса. Создайте там описание метода getter и setter и не объявляйте свойства там.
interface InterfaceClass {
String getName()
String getDescription()
void setName(String name)
void setDescription(String description)
}
Класс EnumClass будет содержать эти свойства и будет реализовывать интерфейс ClassClass.
class EnumClass implements InterfaceClass {
String name
String description
String getName() {
return name
}
void setiName(String name) {
this.name = name
}
String getDescription() {
return description
}
void setDescription(String description) {
this.description = description
}
}
Теперь, чтобы сделать искатель методы работы для InterfaceClass, вы просто должны добавить InterfaceClass свойства в классе домена встроенных списка свойств.
class NonEnumDomain {
InterfaceClass interfaceClass
static embedded = ['interfaceClass']
}
Чтобы сохранить экземпляр NonEnumDomain:
new NonEnumDomain(interfaceClass: new EnumClass(name: "Sandeep Poonia", description: "Interface property in domain class")).save(failOnError: true, flush: true)
и найти экземпляр с помощью искатели:
NonEnumDomain.findByInterfaceClass(new EnumClass(name: "Sandeep Poonia", description: "Interface property in domain class"))
Определение внедренные ключевое слово:
Supports встраивание компонентов домена в классы домена. Вложенный компонент не сохраняет свои данные в своей собственной таблице в качестве обычного домена . Вместо этого данные включаются в таблицу владельца . Класс внедренного компонента обычно объявляется в том же исходном файле как владелец или в его собственном файле под src/groovy. Ограничения могут также применяться к свойствам внедренных компонентов с использованием Подтверждаемый аннотация.
Сделайте еще один класс domian, который реализует ваш интерфейс, а затем используйте его в своем домене. –
Если я правильно понял ваш комментарий домен должен был бы выглядел > интерфейс IterfaceClass { } anotherClass реализует InterfaceClass { } область { AnotherClass anotherClass } 'code' это правильно? однако в нашем случае это ниже сценарий домен { IterfaceClass interfaceClass } –
извините за спам. но для ясности: Если я правильно понял ваш комментарий, домен будет иметь класс домена, реализующий интерфейс, а не домен, имеющий интерфейс как свойство. это правильно? однако, по нашему делу, его позднее; домен, имеющий интерфейс по своему свойству. –