Grails & Vue协作中hasmany 的问题——双向关联失效?

Grails中定义了一对主从域类,主类用hasmany定义了一个子类。子类中,也用belongsTo定义了主类。在创建主类的时候,没有增加子类。而是单独创建的子类。不过,对应关系是保持的。

主类代码:

class EngineeringElement{

    @JSONField(ordinal=0)
    String name
    @JSONField(ordinal=1)
    String appendName
    @JSONField(ordinal=2)
    BasicStructure basicStructure

    @JSONField(ordinal=5)
    SortedSet dataItems

    static hasMany = [dataItems: DataItem]

    static mapping = {}

    static constraints = {
        name(nullable: false)
        appendName(nullable: true)
        basicStructure(nullable: false)
    }

    String toString() {
        return "${name}"
    }

}

子类代码:

class DataItem implements Comparable<DataItem> {

    @JSONField(ordinal = 0)
    String keyString

    @JSONField(ordinal = 1)
    String appendString

    @JSONField(ordinal = 2)
    String valueString

    @JSONField(ordinal = 3)
    DataPropertyType dataPropertyType = DataPropertyType.none

    @JSONField(ordinal = 4)
    int orderCode = 0

    @JSONField(ordinal = 5, name = "engineeringElement")
    static belongsTo = [engineeringElement: EngineeringElement]

    DataItem() {
        keyString = "demo标题"
        appendString = "demo单位"
        valueString = "demo数值"
        dataPropertyType = DataPropertyType.none
    }

    static mapping = {
    }

    static constraints = {
        keyString(nullable: false)
        appendString(nullable: true)
        valueString(nullable: true)
        dataPropertyType()
        orderCode()
    }

    String toString() {
        if (valueString) {
            return "${keyString}=${valueString}(${appendString})"
        } else {
            return "${keyString}"
        }
    }

    @Override
    int compareTo(DataItem o) {
        return orderCode.compareTo(o.orderCode)
    }
}

诡异的结果是:

      系统中访问engineeringElement的时候,dataItems只能列出第一个子类的对象,数组的长度一直是1. 但是,数据库中对应关系是对的,用sql语句访问也没有问题。---是不是很诡异?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值