Grails-Can';t将子记录添加到父记录

Grails-Can';t将子记录添加到父记录,grails,gorm,Grails,Gorm,尝试按照所示的示例,我正在尝试创建一个链接到父记录的记录 就我而言,我有两门课:传感器和读数。我可以创建没有任何问题的传感器,但无论我如何尝试创建读数,我似乎都失败了:( 我已经转了很久了,我认输了,希望有人能发现我愚蠢的错误 还有一件事——我想使用JSON发布数据。但是在调试过程中,我甚至没有查看JSON值,我已经对它们进行了硬编码,但仍然不起作用 ReadingsController.groovy package grailshelloworld import grails.convert

尝试按照所示的示例,我正在尝试创建一个链接到父记录的记录

就我而言,我有两门课:传感器和读数。我可以创建没有任何问题的传感器,但无论我如何尝试创建读数,我似乎都失败了:(

我已经转了很久了,我认输了,希望有人能发现我愚蠢的错误

还有一件事——我想使用JSON发布数据。但是在调试过程中,我甚至没有查看JSON值,我已经对它们进行了硬编码,但仍然不起作用

ReadingsController.groovy

package grailshelloworld

import grails.converters.JSON
import groovy.json.JsonSlurper

class ReadingsController {

    def scaffold=Readings

        def save = {

                def slurper = new JsonSlurper()
                def result = slurper.parseText(request.reader.text)

                def s = new Sensor (sensorid: "SID", sensorname: "name", sensordescription: "description")
                        .addToReadings(reading: "blah")
                        .save()

                render ([ok: false] as JSON)


    }
}
groovy传感器

package grailshelloworld

class Sensor {

    String sensorid
    String sensorname
    String sensordescription

    static hasMany = [readings: Readings]

    static constraints = {
        sensorid blank:false, nullable: false 
        sensorname blank:false, nullable: false
    }
}
格洛维

package grailshelloworld
import java.util.Formatter.DateTime;
class Readings {
    String reading
    static belongsTo = [sensor: Sensor]
}
当前错误:参数类型不匹配

<dt>Class</dt><dd>java.lang.IllegalArgumentException</dd><dt>Message</dt><dd>argument type mismatch</dd></dl><h2>Around line 15 of <span class="filename">grails-app/controllers/grailshelloworld/ReadingsController.groovy</span></h2>
<pre class="snippet"><code class="line"><span class="lineNumber">12:</span>     def slurper = new JsonSlurper()</code><code class="line"><span class="lineNumber">13:</span>        def result = slurper.parseText(request.reader.text)</code><code class="line"><span class="lineNumber">14:</span></code><code class="line error"><span class="lineNumber">15:</span>     def s = new Sensor (sensorid: &quot;SID&quot;, sensorname: &quot;name&quot;, sensordescription: &quot;description&quot;)</code><code class="line"><span class="lineNumber">16:</span>           .addToReadings(reading: &quot;blah&quot;)</code><code class="line"><span class="lineNumber">17:</span>          .save()</code><code class="line"><span class="lineNumber">18:</span></code></pre><h2>Around line 195 of <span class="filename">PageFragmentCachingFilter.java</span></h2>
grails app/controllers/grailshelloworld/readingcontroller.groovy第15行的
Classjava.lang.IllegalArgumentExceptionMessageargument类型不匹配
12:def slurper=new JsonSlurper()
13:def result=slurper.parseText(request.reader.text)14:15:def s=new Sensor(sensorid:“SID”,sensorname:“name”,sensordescription:“description”)16:.添加编辑(阅读:“blah”)17:.保存()18:围绕PageFragmentCachingFilter.java的第195行
您是否通过显式创建一个新的
读数来尝试它

def s = new Sensor (sensorid: "SID", sensorname: "name", sensordescription: "description")
                    .addToReadings(new Readings(reading: 'blah'))
                    .save()
错误是“大约在第15行”,这是
def s=…
语句的开始


我知道医生说这可以用你正在尝试的方法来做,但是值得一试。

是不是把一个孩子添加到一个父母身上?你可以把它叫做一个父母的传感器。也许你应该创建一个读数传感器,然后把它添加到一个传感器上。你能告诉我们你的JSON是什么样子吗?因为错误发生在您的parseText调用上,所以JSON可能有问题。@nidu-在抛出错误之前,代码甚至还没到那个程度。grails允许这种语法,只要带有“blah”的读数确实存在。下面是curl命令,以及JSON:curl-X POST--header“Content Type:application/JSON”--数据二进制“{”sensorid:“28-JSON-ABC”,“collectorname:“collector.attic.pisdr”,“reading”:93.3,“id”:43}”;echo“这就成功了!谢谢你为我节省了无数的时间!