繁体   English   中英

Grails:没有hasMany的域对象中的集合

[英]Grails: Collection in domain object without hasMany

我有两个域对象A和B.

A可以与许多B关联,但我不希望任何从A到B的保存级联。

我正在考虑定义从A到B的hasMany关系,但是然后设置级联行为。 有任何想法吗?

这是我的域对象的示例:

A级{

static hasMany = [bees:B]}

B级{}

如果您不希望GORM管理集合的保存/更新,请不要使用hasMany。 而是将其视为一个简单的HashSet属性。

为什么不在B上使用'belongsTo',并且不在A上声明任何内容? 这样你就可以获得'A'的外键,但'A'上的操作不会影响'B'。 你失去了一些方便,但仍然可以通过'A'轻松查找所有'B'。 我实际上更喜欢这个,因为我不需要担心延迟加载陷阱和hibernate会加载所有'B',当我只是想添加一个(假设你不需要那个功能)。

class A{}

class B{
  static belongsTo = [your_a:A]
 }

 //get your B's for a given A
  B.findAllByA(your_A_instance, ...paging, etc...)

您可以在Domain类的static mappings块中定义自己的级联行为。

请参见此处: http//grails.org/doc/latest/ref/Database%20Mapping/cascade.html

如果你说的是我认为你在说什么,那么你所说的并不是层叠的。 简单的课程大纲会很有帮助。 如果你有一个实例A这与许多实例相关联B ,那么所有的实例B其中引用的实例A问题是引用完全相同的对象 我有同样的问题,并在这里问了一个类似的问题。 基本上你的选择是:

1.)无论何时发生变化或您认为合适,都克隆A的实例。

2.)在B类中创建新字段,其中包含您关注的A值。

两种方法都有其优点和缺点,但对我来说,选项2被证明是更好的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM