20130515-Grails In Action-3、建模(03小节)

上一节了解了怎样对对象的属性进行有效性验证以及验证的测试方法,这一节主要了解对象之间的关系

1:1关系

User对象主要用于登录验证操作,User对象还有一些比较杂的属性,我们单独用一个Profile对象保存,这样User和Profile之间就是1:1的关系

1、增加一个Profile对象

grails create-domain-class com.grailsinaction.Profile

2、给Profile对象增加一些用户属性

 1 package com.grailsinaction
 2 
 3 class Profile {
 4     static belongsTo = User
 5     byte[] photo
 6     String fullName
 7     String bio
 8     String homepage
 9     String email
10     String timezone
11     String country
12     String jabberAddress
13 
14     static constraints = {
15         fullName(nullable: true)
16         bio(nullable: true, maxSize: 1000)
17         homepage(url: true, nullable: true)
18         email(email: true, nullable: true)
19         photo(nullable: true)
20         country(nullable: true)
21         timezone(nullable: true)
22         jabberAddress(email: true, nullable: true)
23     }
24 }

这里最明显的是static belongsTo = User这一句,(直接翻译过来就是“属于”),告诉系统对象之间怎么级联,这个级联的意思是,只要User对象删除了,和这个User相关联的Profile对象也级联删除。belongsTo在n:m关系中还有其他用途

3、修改User对象的属性

 1 package com.grailsinaction
 2 
 3 class User {
 4     
 5     String userId
 6     String password
 7     
 8     Date dateCreated
 9     
10     Profile profile
11 
12     static constraints = {
13         password(size: 6..8, validator: { passwd, user ->
14             passwd != user.userId
15         })
16         dateCreated()
17         profile(nullable: true)
18     }
19 }

将homepage属性移到Profile对象中,将Profile对象作为一个Profile属性持有,并且允许为空。

为了保证User对象和Profile对象能同步,马上刷新数据,在User对象中再增加一个映射块,将默认的懒加载修改成马上更新

1     ......
2     static mapping = {
3         profile lazy:false
4     }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值