WEB开发网
开发学院软件开发Java 使用 Grails 开发 Google App Engine 应用 阅读

使用 Grails 开发 Google App Engine 应用

 2010-06-24 00:00:00 来源:WEB开发网   
核心提示: 清单 8. 非主一对一关系下的删除操作User.withTransaction{defuserInstance=User.get(params.id)if(userInstance){try{BuilderkeyBuilder=newBuilder(User.class.getSimpleNam

清单 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  
…… 
 } 

上一页  4 5 6 7 8 9 10  下一页

Tags:使用 Grails 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接