2011-01-28 78 views
0

我正在从用户处获取“关键字”和表名。 现在,我想查找其数据类型为varchar(String)的表的所有列。 然后我将创建一个查询来将关键字与那些列进行比较,匹配的行将作为结果集返回。我试过desc table_name查询,但它没有工作。我们可以在JPQL中编写描述表查询吗?

我们可以在JPQL中编写描述表查询吗? 如果没有,那么有没有其他方法可以解决上述情况? 请帮助,并提前谢谢。

回答

4

没有解决方法是必要的,因为它不是技术的缺点。这不是JPQL需要改变,这是您选择的技术。在JPQL中,您甚至不能从选择数据。您可以从类中进行选择,并且可以一次将它们映射到多个表,从而实现最简单查询的SQL连接。描述这样的连接将毫无意义。即使您可以描述表格,您也不会使用JPQL中的列名称,而是使用对象的属性。在JPQL中描述表是没有意义的。

JPQL是用于查询对象而不是表格。此外,它指的是静态工作(类只映射到一次关系),而不是动态的事情,比如将表映射到对象或实时检查数据库(这是ror的AR的用途)。属性的动态发现不是其中的一部分。

取决于你真正想实现(我们只知道你正在尝试做的,这是不同的),你有两个基本的选择:

  • ,如果你试图写一个软件中一种动态的方式,以便它可以根据模式中的更改进行调整 - 删除JPQL(或任何其他ORM)。 Java类意味着是静态的,你不能真正将它们映射到动态表(或增加新的属性)。使用行集,它们工作正常,他们会让你使用SQL;

  • 如果您正在构建一个可以被许多项目共享的智能库,并且必须使用许多不同的静态映射,请使用反射API来查找您查询的对象的属性。无论如何,表中列的名称将无济于事,因为在JPQL查询中,您必须使用映射中定义的名称。

0

根据我的说法,我们不能在jpql中使用describe查询。

+0

如果是这样,那么任何其他解决办法? – Sagar 2011-01-28 09:43:27

相关问题