创建我有其中一个具有一对多的关系与其他Grails的一对多的关系:没有数据库
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
为空。在我看来,我所描述的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
,调用来自控制器的方法进行一些计算并更新totalAmount字段。它工作得很好,但是当save
方法被调用,healthServices
字段为空...我不明白为什么......我将打开另一个岗位来解决这个问题(解决here)
我的情况是第二,事实上我没有一个属于在C类。事实是表A_C被正确创建,但是当我创建A对象时,A_C对象的实例从未被创建......并且我不知道为什么!我重新创建了数据库,并且我得到了相同的结果... – FrancescoDS
您是使用默认脚手架还是编写自己的代码进行保存?如果您已经编写了自己的代码,请在此处发布您的代码。此外,我需要知道你如何在UI(_form.gsp)上映射这个关系。 – arvind