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

使用 Grails 开发 Google App Engine 应用

 2010-06-24 00:00:00 来源:WEB开发网   
核心提示: 在有主关系下,可以只调用主实体的更新操作就可同时将子实体进行更新,使用 Grails 开发 Google App Engine 应用(10),比如新增 Task,可以调用当前用户的 save 操作,Task 和 Category 的无主的多对多关系GAE 不支持有主的多对多的关系,那么对于无主的

在有主关系下,可以只调用主实体的更新操作就可同时将子实体进行更新。比如新增 Task,可以调用当前用户的 save 操作。参见清单 11:

清单 11. 有主一对多新增操作

 def taskInstance = new Task(params) 
 Task.withTransaction { 
 def currentuser=User.get(params.currentuser) 
 currentuser.tasks<<taskInstance 
 currentuser.save(flush:true) 
…… 
 } 

从上述代码中可以看出,currentuser.save操作会同时对 taskInstance 进行新增,而 taskInstance 的主键类似于 User(1)/Task(2)。

对于无主的一对多的关系,可以参考无主的一对一关系。这里不再赘述。

Task 和 Category 的无主的多对多关系

GAE 不支持有主的多对多的关系,那么对于无主的多对多的关系,可以通过保留关系双方的键集合来实现。比如 Task 和 Category 的关系可以是无主的多对多的关系:

清单 12. 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 
 List<Key> cats =[] 
…… 
 } 

清单 13. Category 的 Domain Class

 package mulan 
 import com.google.appengine.api.datastore.Key; 
 import javax.persistence.*; 
 @Entity 
 class Category implements Serializable { 
  @Id 
 @GeneratedValue(strategy = GenerationType.IDENTITY) 
 Key id  
 List<Key> tasks =[] 
…… 
 }

上一页  5 6 7 8 9 10 

Tags:使用 Grails 开发

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