database - 一对多关系:没有在数据库上创建任何条目

标签 database select grails one-to-many relation

我有两个域类,其中一个与另一个具有一对多关系

Class A
{
   ...
   @NotNull
   static hasMany = [bElements:B]
}

Class B
{
   ...
}

当我运行该应用程序时,将创建关系表A_B,并在用户创建A对象时自动添加A_B表中的条目。然后我决定更改这种关系,因为我注意到最好在A类和C类之间建立一种关系,所以A类现在有了
static hasMany = [cElements:C]

但是,当我创建一个A类型的新对象(在创建一些C对象之后),添加一个或多个C类型的对象时,在数据库中我看不到A_C表的条目,而只能在A表中看到。

为什么会发生这种行为?我必须控制什么才能解决问题?

编辑:
也许需要一些澄清。 A类是描述发票的类,C类是描述发票项目的类。所以我需要在这两个类之间建立一对多的关系,但是如上所述,它不能按预期工作...

编辑2:
我注意到,也许问题取决于A对象中的cElements字段为空。在 View 中,我描述了cElements字段,如下所示:
<g:select name="receiptItems" from="${HealthService.findAllByDoctor(Doctor.findBySecUser(new ReceiptController().getCurrentlyLoggedUser()))}"
              multiple="multiple" optionKey="id"
              optionValue="${{it.healthServiceType.healthService}}"
              size="5" value="${receiptInstance?.healthServices*.id}" class="many-to-many"
              onchange="${remoteFunction(
                      controller: 'Receipt',
                      action: 'sumReceiptItems',
                      params: '\'receiptItemsSelected=\' + jQuery(this).val()',
                      onSuccess: 'updateTotalAmount(\'totalAmount\', data, \'00000\')')}"/>

这是一个多项选择。每次选择后,使用remoteFunction,将调用 Controller 中的方法进行一些计算并更新totalAmount字段。它工作正常,但是,当调用save方法时,healthServices字段为null ...而且我不明白为什么...我将打开另一篇文章来解决此问题(解决了here)

最佳答案

如果您声明类似

Class A
{
   ...
   @NotNull
   static hasMany = [cElements:C]
}

Class C
{
static belongsTo= [a:A]
   ...
}

在这种情况下,它不会创建A_C,但是如果您声明为
Class A
{
   ...
   @NotNull
   static hasMany = [cElements:C]
}

Class C
{
//no belongTo
   ...
}

然后在数据库中创建A_C以映射这些字段ID。

关于database - 一对多关系:没有在数据库上创建任何条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659448/

相关文章:

php - 用php和数据库选择的下拉框

java - 如何在 MyEclipse 中定义 Label 类?

mysql - 如果其中之一在 Mysql 中具有特定变量,如何改进选择值范围

mysql - 实现大型数据集 : MySQL MEMORY(HEAP), Memcached 或其他的快速查找

php - 如何从当前位置从数据库中获取信息?

mysql - 优化 MySQL SELECT 查询?

grails - 如何使用qrcode 0.3 Grails插件获取qrcode

java - Grails 服务无法使用 Optional 类

database - 如何在Grails中将生产数据库复制到本地数据库

mysql - redis数据库的优势