Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Grails中的一对多映射|我可以在复合键中使用生成的值吗?_Java_Grails_One To Many - Fatal编程技术网

Java Grails中的一对多映射|我可以在复合键中使用生成的值吗?

Java Grails中的一对多映射|我可以在复合键中使用生成的值吗?,java,grails,one-to-many,Java,Grails,One To Many,我有两个表:CompanyRating和RatingMeasure CompanyRating将使用RatingMeasure 以下是我的域类: package com.cedar.ts.bbk import java.io.Serializable; class CompanyRating implements Serializable { private static final long serialVersionUID = -6435485664486973464L;

我有两个表:
CompanyRating
RatingMeasure

CompanyRating
将使用
RatingMeasure

以下是我的域类:

package com.cedar.ts.bbk

import java.io.Serializable;

class CompanyRating implements Serializable {
    private static final long serialVersionUID = -6435485664486973464L;

    String cmpName
    String bbkRating
    String understanding
    java.sql.Date reportDate
    String analystComments

    List<RatingMeasure> measures = new ArrayList<RatingMeasure>();

    static hasMany = [measures: RatingMeasure]

    static constraints = {
        cmpName(blank:true)
        bbkRating(blank:true)
        understanding(blank:true)
        reportDate(blank:true)
        analystComments(blank:true)
    }

    static mapping = {
        id generator:'hilo', params:[table:'hi_value',column:'next_value',max_lo:100]
        table 'CMP_RATING'
        version false
        cmpName column:'CMPNAME'
        bbkRating column:'BBKRATING'
        understanding column:'UNDERSTANDING'
        reportDate column:'REPORTDATE'
        analystComments column:'ANALYSTCOMMENTS'
    }

    def String toString(){
        return cmpName ; //+ " " + bbkRating +" " + understanding  +" " + analystComments +" " +  measures;
    }
}


package com.cedar.ts.bbk

class RatingMeasure implements Serializable{
    private static final long serialVersionUID = -6435485664486973464L;

    Integer measureID
    String measure
    String keyRatios
    String company
    String targetValue
    String indicatorDirection
    CompanyRating companyRating

    static belongsTo = [companyRating:CompanyRating]

    static constraints = {
        measureID(blank:true)
        measure(blank:true)
        measure(blank:true)
        keyRatios(blank:true)
        company(blank:true)
        targetValue(blank:true)
        indicatorDirection(blank:true)
    }

    static mapping = {
        table 'RATING_MEASURE'
        version false
        measureID column:'MSR_ID'
        measure column:'MEASURE'
        keyRatios column:'KEYRATIOS'
        company column:'COMPANY'
        targetValue column:'TARGETVALUE'
        indicatorDirection column:'INDICATORDIRECTION'
        companyRating column:'CMP_ID'

        measureID generator:'hilo', params:[table:'hi_value',column:'next_value',max_lo:100]
        id composite:['measureID', 'companyRating'], generator: "assigned"
    }

    def String toString(){
        return measure;
    }
}

我做错了什么?我希望
measureID
自动分配

这里真的需要使用复合id吗?如果将measureId与hilo生成器一起使用,它已经是唯一的pk选择,因此我认为不需要复合密钥。

这里真的需要使用复合id吗?如果您将measureId与hilo生成器一起使用,那么它已经是唯一的并且是pk的好选择,因此我认为不需要复合密钥

Property [{0}] of class [{1}] cannot be null
[Field error in object 'com.cedar.ts.bbk.CompanyRating' on field 'measures.measureID': rejected value [null];,nullable.com.cedar.ts.bbk.CompanyRating.measures.measureID,nullable.measures.measureID,nullable.measureID,nullable]; arguments [measureID,class com.cedar.ts.bbk.RatingMeasure]; default message [Property [{0}] of class [{1}] cannot be null]]