mapping
26/06/2014 17:41
0
Olá pesoal, gostaria da opinião de vocês sobre um comportamento do Grails:
tenho as seguintes domains:
Person
class Person extends AbstractPerson implements Serializable {
String gender
String lastName
Language language
Location location

static hasMany = [socialAppAccount: SocialAppAccount]
}


Notification
class Notification  implements Serializable {
String message
Date sentDate
Person sender

static hasMany = [recipients: Person]
}


PersonNotifications
class PersonNotifications  implements Serializable {
Person person

static hasMany = [received: Notification, read: Notification]
}


No caso da PersonNotification foi gerada a tabela "person_notifications" que possui apenas id, version e person_id, e a tabela "person_notifications_notification" para os relacionamentos com Notification. Ao meu ver, a tabela "person_notifications_notification" deveria ter uma FK para PersonNotiication e 2 FKs para Notification (uma para "read" e outra para "received"). Entretanto, o que foi gerado foram 2 FKs para PersonNotification ("person_notification_read_id" e "person_notification_received_id") e uma FK para Notification (chamada "person_notification_id").
Tentei contornar o problema usando "static mapping" na domain PersonNotification, conforme abaixo:
class PersonNotifications  implements Serializable {
Person person

static hasMany = [received: Notification, read: Notification]
static mapping = {
receiveds joinTable: [name: 'person_notifications_notification', column: 'received_id']
reads joinTable: [name: 'person_notifications_notification', column: 'read_id']
}
}


Desta forma foram geradas 4 FKs, 2 referenciando PersonNotification("person_notification_read_id" e "person_notification_received_id") e 2 referenciando Notification("received_id" e "read_id").

Como posso fazer para realizar este mapeamento corretamente?
Tags: mapping


0
Oi Dyego,

não sei se entendi direito a sua dúvida, mas já deu uma olhada na instrução mappedBy do Grails?


0
Olá Henrique,
Ja havia visto e tentado usar o mappedBy, mas não funcionou. Usa-lo não mudou nada na base gerada.
Pelo que entendi do mappedBy ele seria usada em relacionamentos bidirecionais ou para indicar um relacionamento unidirecional (static mappedBy = [ meu_relacionamento: "none"]), certo?
01/07/2014 12:52


0
Oi Dyego, exato.

Acho que agora entendi a sua dúvida. Bom: um outro ponto que você pode usar para te ajudar na geração as tabelas é o bloco mapped, aonde podemos customizar o modo como este mapeamento é feito.




Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto