У меня есть классы домена два:Grails Горм нулевых полей
class Person {
String lastname
String firstname
String alias
Date birthday
String notes
static belongsTo = [addressBook: AddressBook, mainAddress: Address]
static hasMany = [tags: Tag, addresses: Address]
static constraints = {
mainAddress nullable: true
addresses nullable: true
alias nullable: true
birthday: nullable: true
tags nullable: true
notes nullable: true
}
}
и
class Address {
AddressType addressType
static belongsTo = [person: Person]
String company
String street
String zipCode
String city
String eMail
String phone
String mobile
String website
static constraints = {
person nullable: true
company nullable: true
website nullable: true
}
}
Предполагается, что каждый человек имеет несколько адресов и может определить один адрес в качестве основного-адреса.
Внутри моего контроллера я делаю
params.max = Math.min(max ?: 10, 100)
respond Person.list(params)
для загрузки всех лиц, со всеми адресами. Получаемые объекты person содержат список адресов со всеми адресами и mainAddress. Но адреса, которые используются в качестве основного адреса, имеют только пустые (нулевые) поля в обоих объектах (один в списке и mainAddress-object.). Когда я не устанавливаю mainAddress, адрес-объект в списке адресов поставляется со всеми правильно настроенными полями. Поля базы данных (я использую в-памяти-дб до сих пор) кажутся правильными:
create table address (id bigint generated by default as identity, version bigint not null, address_type varchar(255) not null, city varchar(255) not null, company varchar(255), e_mail varchar(255) not null, mobile varchar(255) not null, person_id bigint, phone varchar(255) not null, street varchar(255) not null, website varchar(255), zip_code varchar(255) not null, primary key (id))
create table person (id bigint generated by default as identity, version bigint not null, address_book_id bigint not null, alias varchar(255), birthday timestamp not null, firstname varchar(255) not null, lastname varchar(255) not null, main_address_id bigint, notes varchar(255), primary key (id))
Кто-нибудь идея, почему мое отображение не работает?
Спасибо за помощь заранее
Roland
класс принадлежит лицуТя адрес и адрес принадлежит лицу? вы, должно быть, шутите – injecteer
, вероятно, вы имели в виду 'Person hasOne Address' и' Address принадлежит человеку'? – injecteer