4

我在简单更新 Grails 域类时遇到问题,我真的需要进行完整性检查。我的域类是

class Container implements Serializable{

String barcode
Float tare
static hasOne = [containerContent:ContainerContent, containerSolvent:ContainerSolvent]

static constraints = {
    barcode blank: false, nullable: false, unique: true, size: 0..100
    containerSolvent blank: true, nullable: true, unique: true
    containerContent blank: true, nullable: true, unique: true
    tare blank: true, nullable: true
}}

当我尝试以以下方式更新 Containers 属性“去皮”时,出现错误(如下)

myFoundContainer = Container.findByBarcode(contents.get("barcode"))
def myContainer = Container.get(myFoundContainer.id )
def myTare = contents.get("tare")

try{
              myContainer.lock()
              myContainer.tare = myTare
              myContainer.save(flush:true)
    }
catch (org.springframework.dao.OptimisticLockingFailureException e) {
               println(e)
    }

然后我得到错误:

没有为参数 1 java.sql.SQLException指定值

我假设是指构造函数中的 Container id?但我认为这在更新期间并不重要。

在控制台中,我还看到以下消息:

Hibernate:从容器中选择 id,其中 id =?和版本=?更新

一个想法,这是否与任何约束“hasOne”有关

如果有帮助,我正在使用 MySQL 数据库。感谢您提供任何帮助。

  No value specified for parameter 1. Stacktrace follows:
Message: No value specified for parameter 1
    Line | Method
->> 1074 | createSQLException    in com.mysql.jdbc.SQLError
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    988 | createSQLException    in     ''
|    974 | createSQLException .  in     ''
|    919 | createSQLException    in     ''
|   2611 | checkAllParametersSet in com.mysql.jdbc.PreparedStatement
|   2586 | fillSendPacket        in     ''
|   2510 | fillSendPacket . . .  in     ''
|   2259 | executeQuery          in     ''
|     96 | executeQuery . . . .  in org.apache.commons.dbcp.DelegatingPreparedStatement
|    358 | uploadMethod          in com.sagerx.UpdateContainerStatusUponReceiptService$$EOHFXFJX
|     24 | uploadFile . . . . .  in com.sagerx.UpdateContainerStatusController
|    195 | doFilter              in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter . . . . . .  in grails.plugin.cache.web.filter.AbstractFilter
|   1110 | runWorker             in java.util.concurrent.ThreadPoolExecutor
|    603 | run . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run                   in java.lang.Thread
4

1 回答 1

4

这可能与这个Grails JIRA 问题有关(也在这个问题中提到)

unique: true这个问题提到了在一对一关联上使用约束时发生的类似错误。containerSolvent尝试从和中删除唯一约束containerContent

于 2013-09-12T18:08:35.293 回答