使用 Grails 开发 Google App Engine 应用
2010-06-24 00:00:00 来源:WEB开发网清单 8. 非主一对一关系下的删除操作
User.withTransaction {
def userInstance = User.get( params.id )
if(userInstance) {
try {
Builder keyBuilder = new Builder(User.class.getSimpleName(),
userInstance.id);
keyBuilder.addChild(UserProfile.class.getSimpleName(),
userInstance.id);
def up=UserProfile.get(keyBuilder.getKey())
up.delete(flush:true)
userInstance.delete(flush:true)
}
}
}
这里需要注意,如果 User 类中没有 uprofile 字段,只要 UserProfile 的主键 Key 的内容正确(形如 User(1)/UserProfile(1)),二者同样是在一个实体组中。
User 和 Task 的有主的一对多关系
ToDo 中,User 和 Task 的关系是有主的一对多的关系,如果某个 User 不存在,那么这个 User 的 Task 也不存在。User 跟 Task 是通过 Task 类的集合进行关联。参见如下代码:
清单 9. User 的 Domain class
package mulan
import javax.persistence.*;
@Entity
class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id
……
@OneToMany(cascade=CascadeType.ALL)
List<Task> tasks =[]
……
}
清单 10. Task 的 Domain class
package mulan
import com.google.appengine.api.datastore.Key;
import javax.persistence.*;
@Entity
class Task implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Key id
……
}
更多精彩
赞助商链接