gpt4 book ai didi

java - 此实现不支持方法remove(Object o) 在DataBindingLazyMetaPropertyMap中

转载 作者:行者123 更新时间:2023-11-30 06:51:22 24 4
gpt4 key购买 nike

在 grails 中的 DataBindingLazyMetaPropertyMap 中,“put, get”方法确实有效,但删除不起作用。有人对此有任何想法和解决方案吗???

我的代码:

   def mapObj = [age:"20",location:"earth"] 
mapObj.put("name","test"); // inserts the data in mapObj with key = "name"

mapObj.get("name"); // returns the value of the mapObj with key = "name"

mapObj.remove("name"); // removes the key value pair from mapObj with key = "name"

mapObj的类是java.util.LinkedHashMap

到目前为止,一切都工作正常。

 mapObj = domainObj.properties

将mapObj的类转换为DataBindingLazyMetaPropertyMap

mapObj.put("name","test"); // inserts the data in mapObj with key "name" 

mapObj.get("name"); // returns the value of the mapObj with key "name"

mapObj.remove("name"); // returns error Method remove(Object o) is not supported by this implementation

最佳答案

当您不确定它是什么数据类型时:

mapObj = domainObj.properties
println "object is now ${mapObj.getClass()}"

在 groovy 中,有时事物会成为真实的对象,因此您需要获取它的副本。与上面的例子进行比较:

mapObj = domainObj.properties.clone()

e2A

所以你的评论表明它无法被克隆。

请查看此链接

http://docs.grails.org/latest/ref/Domain%20Classes/properties.html

def b = new Book(title: "The Shining")
b.properties = params
b.save()

我从来没有在任何地方使用过属性来查询/获取域对象映射总是设置它的值

您需要编写一个 HQL 查询来从 A blah 中选择新 map (e.a 作为 a,e.b 作为 b) 以返回平面 map

或者在您的域类中引入一个新函数

Class Example
String a
String b

def loadValues() {
Map map = [:]
map.a=this.a
map.b=this.ba
return map
}
}

现在打电话

mapObj = domainObj.loadValues()

返回对象的平面 map

另请参阅实现可克隆

关于java - 此实现不支持方法remove(Object o) 在DataBindingLazyMetaPropertyMap中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42711964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com