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[] 数据,但这很容易。
我仍然不知道为什么会这样,我找不到任何相关信息,但它现在按预期工作。
我有一个奇怪的问题。我有一个域对象:
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[] 数据,但这很容易。
我仍然不知道为什么会这样,我找不到任何相关信息,但它现在按预期工作。