gpt4 book ai didi

java - 如何从 PersistentSet 中获取可能为空的元素类型

转载 作者:行者123 更新时间:2023-12-01 04:56:43 26 4
gpt4 key购买 nike

好吧,问题本身就解释清楚了,这就是我尝试做的事情。我认为问题可能是 Set 为空,而这些方法至少需要一个元素才能返回该类。

views/product/_form.gsp

<% cl = UnidadProductiva.get(params.unidadProductiva?.id).producto %>
<p>${cl}</p>

返回[]

如果我在producto之后添加此方法/属性:

.getCandidateClass() : 没有方法签名:
org.hibernate.collection.PersistentSet.getCandidateClass() 适用于参数类型:() 值:[]

.class:
org.hibernate.collection.PersistentSet 类

.getElementType() :没有方法签名:
org.hibernate.collection.PersistentSet.getElementType() 适用于参数类型: () 值: [] 可能的解决方案: getElement(java.lang.Object)

.属性:

{
clearQueueEnabled=true,
session=SessionImpl(PersistenceContext[
entityKeys=[
EntityKey[
planificador.UnidadProductiva#1
]
],
collectionKeys=[
CollectionKey[
unidadesProductivas.Cocimiento.producto#1
],
CollectionKey[
planificador.UnidadProductiva.grupoRecursos#1
],
CollectionKey[
planificador.UnidadProductiva.lineaProduccion#1
]
]
];ActionQueue[
insertions=[

]updates=[

]deletions=[

]collectionCreations=[

]collectionRemovals=[

]collectionUpdates=[

]
]),
unreferenced=false,
role=unidadesProductivas.Cocimiento.producto,
directlyAccessible=false,
empty=true,
storedSnapshot={

},
operationQueueEnabled=false,
value=[

],
owner=unidadesProductivas.Cocimiento: 1,
cachedSize=-1,
class=classorg.hibernate.collection.PersistentSet,
rowUpdatePossible=false,
snapshot={

},
key=1,
putQueueEnabled=false,
dirty=false
}

我期待一个返回CaldoMadre的方法或属性

这是我正在使用的类

class UnidadProductiva {...}

class Cocimiento extends UnidadProductiva {
static hasMany = [producto:CaldoMadre];
}

class Producto {
static belongsTo = [unidadProductiva:UnidadProductiva]
}

class CaldoMadre extends Producto {...}

我是智利的 grails 菜鸟,如果我不明白,请耐心等待。

最佳答案

我能够让它在 Cocimiento 上工作但不是UnidadProductiva因为没有声明字段productoUnidadProductiva 。在 gsp 中使用有点尴尬,但也许你可以在 Controller 中执行并将其传递出去:

//in controller
import java.lang.reflect.*

//in show action or whichever makes sense
Field field = Cocimiento.class.getDeclaredField("producto");
ParameterizedType pt = (ParameterizedType) field.getGenericType();
Type concreteType = pt.getActualTypeArguments()[0];
println concreteType.getName()

将打印出com.CaldoMadre使用我的包设置。

而且它不依赖 Set 中存在任何内容。

关于java - 如何从 PersistentSet 中获取可能为空的元素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979372/

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