我使用iREPORT分享到人人4.1.1休眠JPA和我有检索两个实体的查询:获取值报告
select a,b from TableA a left join a.tableBList b
我想获得的价值A和b,在Java中,它返回一个对象有两个元素的数组(对象[]),但是当我尝试这样做的碧玉报告它给了我这个错误:
Exception in thread "main" net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : fieldName
我以为只有我需要用将返回的对象的名称替换fieldName,但我不知道它,我试图找到它b我没有成功,你们中的任何人都可以帮我吗?
感谢提前:)
不确定hibrenate是如何做的,但我会检查每一行返回的是否是Object [],这意味着如果您的查询返回5行,那么您将得到5个Object数组的列表。 'Object [0]'会有'a','Object [1]'会有'b'。所以,如果你做'$ F {fieldName} [0]'它会给你'a',你可以访问那个对象的属性。 –
@jschoen是我已经尝试过,它应该工作,问题是,我必须指定字段名称,但我不能得到该名称,例如,如果我的查询返回一个实体名为'人'这个实体有一个属性命名为'age',所以如果我想访问该属性,我声明一个名为'age'的字段,并且可以使用'$ F {age}'访问该属性,但是在查询返回数组两个对象,我不知道什么名字给这个领域,我解释我? – oware
啊,那不是领域。你的领域实际上是一个对象数组。假设你在你的报告中命名了对象数组“row”,那么它会看起来像'$ F {row} [0] .getAge()'。这可能会也可能不会,因为您可能需要将'$ F {row}'强制转换为'Person'类,这意味着您需要将该类添加到iReport的类路径中进行编译。但是,如果你需要施放它,应该看起来像'((Person)$ F {row} [0])。getAge()'。这一切都是我的头顶,所以你的里程可能会有所不同。 –