繁体   English   中英

我们可以在JPQL中编写描述表查询吗?

[英]Can we write describe table query in JPQL?

我正在从用户那里获取“关键字”和表名。 现在,我想查找数据类型为varchar(String)的表的所有列。 然后,我将创建将关键字与那些列进行比较的查询,并将匹配的行作为结果集返回。

我尝试了desc table_name查询,但是没有用。

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

无需任何解决方法,因为这不是该技术的缺点。 不需要更改JPQL,这是您选择的技术。 在JPQL中,您甚至无法从表中选择数据。 您从类中选择,这些类可以一次映射到多个表,从而为最简单的查询生成SQL连接。 描述这样的连接是没有意义的。 即使可以描述一个表,您也不使用JPQL中的列名,而是使用对象的属性。 在JPQL中描述表格毫无意义。

JPQL用于查询对象,而不是表。 同样,它是为静态工作(将类一劳永逸地映射到关系)而设计的,而不是为动态事物(例如,将表动态映射到对象或实时检查数据库)(这是ror的AR的目的)。 动态发现属性不是其中的一部分。

根据您真正想要实现的目标(我们只知道您要做什么,这是不同的),您有两种基本选择:

  • 如果您试图以动态方式编写软件,以便它可以根据模式的变化进行自我调整,请删除JPQL(或任何其他ORM)。 Java类是静态的,您不能真正将它们映射到动态表(或增加新属性)。 使用行集,它们可以正常工作,并且可以让您使用SQL;

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

映射数据库字典表并从中读取所需的数据。 对于Oracle数据库,您需要从以下三个表中进行选择:user_tab_comments,user_tab_cols,user_col_comments; 以实现describe语句的全部功能。

在社区中有一些关于JPA未来版本中的持久性单元的动态定义的讨论: http : //www.oracle.com/goto/newsletters/javadev/0111/blogs_sun_devoxx.html? msgid= 3-3156674507

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM