gpt4 book ai didi

Grails hasOne 关系真的是双向的吗?

转载 作者:行者123 更新时间:2023-12-02 15:00:31 26 4
gpt4 key购买 nike

我想对域关联进行反射(reflection),以自动为 RESTful WS(脚手架)生成 JSON/XML 格式的类描述 rune 件。在 HasOne 的情况下(据说是双向的),我试图在 Association 对象中使用 referencedPropertyName 来显示反向键(这是 WS 必须显示的唯一信息)。

尽管如此,我发现 hasOne 关联没有正确初始化。

下面是我使用 Grails 2.3.7 进行的测试。

我的域名是:

class House {

Long number
Integer inhabitants

static hasOne = [ roof: Roof ]
static hasMany = [ doors: Door ]

static constraints = {
roof nullable: true, unique: true
}
}

class Roof {

String color
House house

static constraints = {
}
}

然后:
import org.grails.datastore.mapping.model.types.Association
import org.junit.Test

import spock.lang.*
import test.House
class AssociationsSpec {
@Test
void "test something"() {
House.gormPersistentEntity.associations.each { Association association ->
String key = association.name
println association.properties
assert association.bidirectional
}
}
}

此测试失败:
Assertion failed: 
assert association.bidirectional
| |
| false
test.House->roof
at test.AssociationsSpec$_test_something_closure1.doCall(AssociationsSpec.groovy:26)
at test.AssociationsSpec.test something(AssociationsSpec.groovy:23)

附加信息(println association.properties):
[list:false, type:interface java.util.Set, owner:org.codehaus.groovy.grails.domain.GrailsDomainClassPersistentEntity@149a797, class:class org.codehaus.groovy.grails.domain.GrailsDomainClassPersistentEntity$5, cascadeOperations:[ALL], inverseSide:test.Door->house, capitilizedName:Doors, bidirectional:true, referencedPropertyName:house, associatedEntity:org.codehaus.groovy.grails.domain.GrailsDomainClassPersistentEntity@99a9c3, mapping:null, circular:false, owningSide:true, name:doors, fetchStrategy:EAGER]

[capitilizedName:Roof, bidirectional:false, referencedPropertyName:null, circular:false, owningSide:true, name:roof, list:false, type:class test.Roof, owner:org.codehaus.groovy.grails.domain.GrailsDomainClassPersistentEntity@149a797, class:class org.codehaus.groovy.grails.domain.GrailsDomainClassPersistentEntity$4, cascadeOperations:[ALL], inverseSide:null, associatedEntity:org.codehaus.groovy.grails.domain.GrailsDomainClassPersistentEntity@16289cc, mapping:null, foreignKeyInChild:true, fetchStrategy:EAGER]

谢谢

最佳答案

为了使这个双向你需要添加static belongsTo = [house: House]并删除您的 House house来自 Roof 的属性(property)领域。

您可以在 documentation 中阅读有关 belongsTo 属性的更多信息。 .

关于Grails hasOne 关系真的是双向的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26242743/

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