1

好吧,这个问题自己解释了,这就是我尝试做的方式。我认为问题可能在于 Set 为空,并且这些方法至少需要一个元素才能返回该类。

意见/产品/_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 {...}

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

4

1 回答 1

0

我能够让它在 a但Cocimiento 不是 a上工作,UnidadProductiva因为. 在 gsp 中使用有点尴尬,但也许你可以在控制器中执行它并将其传递出去:productoUnidadProductiva

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

于 2012-12-21T02:52:35.190 回答