首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >grails中的关系类型

grails中的关系类型
EN

Stack Overflow用户
提问于 2011-08-14 14:37:18
回答 2查看 609关注 0票数 0

在两个类(hasOne/hasMany和belongsTo)中指定关系的用途是什么?让我们举个例子

代码语言:javascript
运行
复制
class User {
   Profile profile
}

class Profile {
    String name
    String age
    String location
} 

在本例中,User有一个Profile。那么如何指定hasOnebelongsTo关系,为什么呢?

指定关系类型的用途是什么?我们可以只使用对象,而不是在User中指定hasOne。

EN

回答 2

Stack Overflow用户

发布于 2011-08-14 22:21:06

您可以使用这两种方法之一。hasOnebelongsTo属性定义了类之间的关系,还添加了删除、保存和更新时的级联。如果您决定不使用这些属性,则必须实现您自己的级联效果。

在开发大型应用程序时,不使用这些属性和映射关系是有好处的,因为它们会导致性能开销。这在Burt Beckwiths blog中有解释

票数 3
EN

Stack Overflow用户

发布于 2011-08-14 22:22:21

使用hasOne和belongsTo可以控制GORM处理关系的方式。根据latest Grails documentation on GORM modeling,以下情况是正确的:

类User { Profile profile }将导致多对一关系。这意味着任意数量的客户端可以指向给定的配置文件。除此之外,没有任何关系会被强制执行。

如果给这个概要文件一个静态的belongsTo = client:Client,那么这个关系就变成了一个双向的多对一关系,这意味着一个客户机有一个概要文件,而这个概要文件属于这个特定的客户机。GORM现在将在保存、更新或删除客户端时管理配置文件的持久化(保存、更新和删除)。这还允许您通过GORM对概要文件进行查询,并将后向引用公开给客户端。

hasOne用于创建一对一关系。您应该将此应用于关系的拥有方(在您的示例中为客户端)。这将允许GORM在保存、更新或删除客户端时管理配置文件的持久性。

最后,hasMany允许您从拥有方(在您的示例中为client )定义一对多关系,其中一个客户端可能有多个Profile(愚蠢的,但我使用的是您的示例属性)。这再次告诉GORM,应该在保存、更新或删除客户端时处理持久性。关于这种类型的关系有一些陷阱,我强烈建议您阅读参考文档,以了解如何正确使用这种类型的关系的更多信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7055442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档