Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们可以在JPQL中编写描述表查询吗?_Java_Spring_Jpa_Spring Mvc_Jpql - Fatal编程技术网

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

Java 我们可以在JPQL中编写描述表查询吗?,java,spring,jpa,spring-mvc,jpql,Java,Spring,Jpa,Spring Mvc,Jpql,我从用户处获取“关键字”和表名。 现在,我想查找表中数据类型为varchar(String)的所有列。 然后我将创建一个查询,将关键字与这些列进行比较,匹配的行将作为结果集返回 我尝试了desctable\u namequery,但没有成功 我们可以在JPQL中编写描述表查询吗? 如果没有,那么有没有其他方法来解决上述情况? 请提前帮助并感谢您。根据我的说法,我们不能在jpql中使用描述查询。根据我的说法,我们不能在jpql中使用描述查询。不需要解决方法,因为这不是该技术的缺点。需要改变的不是J

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

我尝试了
desctable\u name
query,但没有成功

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

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

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

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

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

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

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

  • 如果您正在构建一个可由许多项目共享的智能库,因此必须使用许多不同的静态映射,那么可以使用反射API查找您查询的对象的属性。表中列的名称对您没有任何帮助,因为在JPQL查询中,您必须使用映射中定义的名称


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

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

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

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

      • 如果您正在构建一个可由许多项目共享的智能库,因此必须使用许多不同的静态映射,那么可以使用反射API查找您查询的对象的属性。表中列的名称对您没有任何帮助,因为在JPQL查询中,您必须使用映射中定义的名称


      映射数据库字典表并从中读取所需数据。对于Oracle数据库,您需要从以下三个表中进行选择:用户标签注释、用户标签注释、用户标签注释;实现描述语句的全部功能


      社区中有一些关于JPA未来版本中持久单元的动态定义的讨论:

      映射数据库字典表并从中读取所需数据。对于Oracle数据库,您需要从以下三个表中进行选择:用户标签注释、用户标签注释、用户标签注释;实现描述语句的全部功能

      关于JPA未来版本中持久单元的动态定义,社区中有一些讨论: