我正在从用户处获取“关键字”和表名。 现在,我想查找其数据类型为varchar(String)的表的所有列。 然后我将创建一个查询来将关键字与那些列进行比较,匹配的行将作为结果集返回。我试过desc table_name
查询,但它没有工作。我们可以在JPQL中编写描述表查询吗?
我们可以在JPQL中编写描述表查询吗? 如果没有,那么有没有其他方法可以解决上述情况? 请帮助,并提前谢谢。
我正在从用户处获取“关键字”和表名。 现在,我想查找其数据类型为varchar(String)的表的所有列。 然后我将创建一个查询来将关键字与那些列进行比较,匹配的行将作为结果集返回。我试过desc table_name
查询,但它没有工作。我们可以在JPQL中编写描述表查询吗?
我们可以在JPQL中编写描述表查询吗? 如果没有,那么有没有其他方法可以解决上述情况? 请帮助,并提前谢谢。
没有解决方法是必要的,因为它不是技术的缺点。这不是JPQL需要改变,这是您选择的技术。在JPQL中,您甚至不能从选择数据。您可以从类中进行选择,并且可以一次将它们映射到多个表,从而实现最简单查询的SQL连接。描述这样的连接将毫无意义。即使您可以描述表格,您也不会使用JPQL中的列名称,而是使用对象的属性。在JPQL中描述表是没有意义的。
JPQL是用于查询对象而不是表格。此外,它指的是静态工作(类只映射到一次关系),而不是动态的事情,比如将表映射到对象或实时检查数据库(这是ror的AR的用途)。属性的动态发现不是其中的一部分。
取决于你真正想实现(我们只知道你正在尝试做的,这是不同的),你有两个基本的选择:
,如果你试图写一个软件中一种动态的方式,以便它可以根据模式中的更改进行调整 - 删除JPQL(或任何其他ORM)。 Java类意味着是静态的,你不能真正将它们映射到动态表(或增加新的属性)。使用行集,它们工作正常,他们会让你使用SQL;
如果您正在构建一个可以被许多项目共享的智能库,并且必须使用许多不同的静态映射,请使用反射API来查找您查询的对象的属性。无论如何,表中列的名称将无济于事,因为在JPQL查询中,您必须使用映射中定义的名称。
根据我的说法,我们不能在jpql中使用describe查询。
映射数据库字典表并从中读取所需的数据。对于Oracle数据库,您需要从以下三个表中进行选择:user_tab_comments,user_tab_cols,user_col_comments;以实现描述语句的全部功能。
有超过社会上一些谈到了持久单元的动态清晰度在JPA的未来版本:http://www.oracle.com/goto/newsletters/javadev/0111/blogs_sun_devoxx.html?msgid=3-3156674507
如果是这样,那么任何其他解决办法? – Sagar 2011-01-28 09:43:27