gpt4 book ai didi

hibernate - findAll()不返回正确的对象类型

转载 作者:行者123 更新时间:2023-12-02 14:28:50 26 4
gpt4 key购买 nike

ItemTag对象包含一个Item对象和一个Tag对象。 (这些是Java域对象。)

这个简单的查询按预期工作。我返回一个ItemTags列表,并且可以完成ItemTags应该做的所有奇妙的事情:

def theTags1 = ItemTag.findAll("from ItemTag  b")

例如:
println(theTags1[0].tag.tag)

给我这个如预期的那样:
Pilgrim's Progress

但是,一旦我向条件中添加了另一个表,就没有获得ItemTag的列表,而是获得了通用对象的列表。

例如以下
def theTags2 = ItemTag.findAll("from ItemTag  b, Tag a where b.tag= a")

theTags2.each {
theClass = it.getClass();
nameOfClass = theClass.getName();
println(nameOfClass)
}

退货
[Ljava.lang.Object;
[Ljava.lang.Object;
[Ljava.lang.Object;

而且我根本无法使用生成的对象。例如:
println(theTags2[0].tag.tag)

给我这个错误:
Exception evaluating property 'tag' for java.util.ArrayList, Reason: groovy.lang.MissingPropertyException: No such property: tag for class: java.lang.String


def exTag2 = (ItemTag) theTags2[0]

给我这个错误:
Cannot cast object '[Ljava.lang.Object;@2d81f' with class '[Ljava.lang.Object;' to class 'org.maflt.flashlit.pojo.ItemTag'

我需要做什么才能获得可用的对象?谢谢!

最佳答案

在休眠状态下

"from ItemTag b, Tag a where b.tag= a"



查询是交叉联接。该查询的结果是一个对象数组列表,其中第一项是ItemTag实例,第二项是Tag实例。

您必须使用

(ItemTag) theTags2[0][0]



访问第一个ItemTag实例。

关于hibernate - findAll()不返回正确的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1093918/

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