Grails 2.4.4:createCriteria().list() 上的数据库记录更新

Grails 2.4.4: Database record updates on createCriteria().list()

我有一个奇怪的问题。我有一个域对象:

    class MyClass {
        String name
        Boolean new = true
        String number
        String type
        Byte[] data    
        Date dateCreated      
        Date lastUpdated

        static belongsTo = [
            other: MyOtherClass
        ]

        static mapping = {
            table 'my_classes'
            data column: "data", sqlType: "MEDIUMBLOB"
        }

        static constraints = {
            data  maxSize: 8000 * 66
            number nullable: true
        }
    }

在我的控制器中(编辑以显示整个方法):

def list = {
    def myOtherClasses = MyOtherClass.getAll()

    if ( !params.max ) params.max = 20

    if ( !params.sort && !params.order ) {
        params.sort = "new"
        params.order= "desc"
    }

    def myClassCount = MyClass.createCriteria().count() {
        'in'( 'other', myOtherClasses )
        order( params.sort, params.order )
    }

    def myClassList = MyClass.createCriteria().list() {
        'in'( 'other', myOtherClasses )
        order( params.sort, params.order )
    }

    return [ myClassList: myClassList, myClassCount: myClassCount ]
}

结果不错,观点正确。但是每次这段代码运行时,数据属性是脏的,所以version递增,lastUpdated被更新。

数据 属性 包含音频数据,但我认为这不相关。

我不知道这里发生了什么。所以我的问题是,如何让它停止更新?

使用: 圣杯 2.4.4 休眠 3.6.10.18 MySQL5.7.9

提前致谢:)

经过大量研究和测试,以及一些很棒的文章,我找到了解决方案:

我没有在域对象中使用类型 Byte[],而是使用 java.sql.Blob,并删除了映射中的 sqlType。

在控制器中,我必须进行一些更改才能从 Blob 访问 Byte[] 数据,但这很容易。

我仍然不知道为什么会这样,我找不到任何相关信息,但它现在按预期工作。