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

    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
        }
    }

在 Controller 中,我有(编辑以显示整个方法):
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 ]
}

结果良好且 View 正确。但是,每次运行此代码时,数据属性都是脏的,因此版本会增加,并且lastUpdated也将更新。

data属性保存音频数据,但我认为这无关紧要。

我不知道这是怎么回事。所以我的问题是,如何使其停止更新?

使用:
Grails 2.4.4
休眠3.6.10.18
MySQL的5.7.9

提前致谢 :)

最佳答案

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

我使用java.sql.Blob,而不是在Domain Object中使用类型Byte [],并删除了映射中的sqlType。

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

我仍然不知道为什么会这样,而且我也找不到任何信息,但是现在它正在按预期运行。

10-07 13:03
查看更多