JPA - 如何访问查询元数据?

时间:2011-04-01 18:05:48

标签: java jpa eclipselink

我正在为我的应用程序创建通用报告逻辑,并希望能够运行任何查询并解析响应。报告的输入是我使用EntityManager.createNativeQuery(query)运行的本机SQL查询。

我已经完成了所有这些工作,但是目前我还要指出查询响应的返回“标题”。

例如,对于此查询:

SELECT name, email FROM users;

我需要知道我从查询中找回了名称和电子邮件。我从运行查询中获得的只是一个String数组列表。不知何故,我希望能够找回这个特定查询的[“name”,“email”]数组或列表。

我没有看到询问Query对象以查找此信息的方法。我也没有在响应中看到任何有关此数据的迹象。有没有办法在JPA中获取此数据?

具体来说,我使用的实现是EclipseLink。

感谢。

3 个答案:

答案 0 :(得分:4)

EclipseLink还允许本机查询返回Maps而不是Object []。

使用“eclipselink.result-type”提示。

“eclipselink.result型”= “地图”

答案 1 :(得分:0)

以下查询从数据库中获取必填字段&使用适当的构造函数&设置到对象中返回对象列表。

SELECT NEW package_name.User(u.name,u.email) FROM User u;

这将返回User对象的列表而不是字符串数组,其名称为&电子邮件字段已设置&其余字段设置为默认值。

您必须只传递需要获取的字段,但必须为其提供构造函数。在这种情况下,对于User类,应该有字段名称的构造函数,电子邮件。

在这里,您不必记住字段名称,只需使用访问器(get)方法从对象中获取所需的详细信息。

答案 2 :(得分:0)

使用AspectJ,您可以从查询中获得所需的信息。