gpt4 book ai didi

grails - Grails/GORM是否允许在单独的Java程序包中建立关系?

转载 作者:行者123 更新时间:2023-12-02 14:22:33 25 4
gpt4 key购买 nike

Grails 3应用程序-我在Grails中的hasMany属性没有填充时遇到了麻烦。我刚刚意识到,拥有类与拥有类位于不同的包中。通过跨包边界进行关联,我是否在做一些愚蠢的事情?

我正在做和观察的基本示例,以防万一:

所属域类:

package com.example.project

import com.example.project.configuration.ConfigFile

class MotherClass {
String name
static hasMany = [ configFiles: ConfigFile ]
}

所属域类:
package com.example.project.configuration

import com.example.project.*

class ConfigFile {
String name
MotherClass motherClass
}

在Bootstrap.groovy中:
MotherClass motherClass = new MotherClass(name:"mother").save(failOnError: true)
new ConfigFile(name: "file1", motherClass: mother).save(failOnError: true)
new ConfigFile(name: "file1", motherClass: mother).save(failOnError: true)
assert motherClass.configFiles.size() > 0 #this assertion would fail

在随机服务中:
assert MotherClass.findByName("mother").configFiles.size() > 0 #this would fail too.

我的断言失败可能是由我遇到的其他问题引起的,但我想验证是否应该跨软件包边界。

最佳答案

如果您在上面的键入中没有记错,那么您定义的是“motherClass”对象,但是在ConfigFiles中将motherClass设置为“mother”对象。

我认为情况并非如此-那么,我认为您没有为Grails提供足够的有关所有者-子关系的信息。

通常,您会将子级添加到所有者类并保存所有者类,然后将保存级联给子级。

MotherClass mother = new MotherClass(name:"mother")
mother.addToConfigFiles(new ConfigFile(name: "file1", motherClass: mother))
mother.addToConfigFiles(new ConfigFile(name: "file1", motherClass: mother))
mother.save(failOnError: true)

理想情况下,您应该在ConfigFile端具有belongsTo子句-否则删除操作将不会级联。请参阅: http://docs.grails.org/3.1.1/ref/Domain%20Classes/belongsTo.html

关于grails - Grails/GORM是否允许在单独的Java程序包中建立关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38112093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com