我有一个奇怪的问题。我有一个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 []数据,但这很容易。
我仍然不知道为什么会这样,而且我也找不到任何信息,但是现在它正在按预期运行。