Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 我可以在JPA中获得带有占位符值的SQL查询吗_Java_Hibernate_Jpa_Jpql - Fatal编程技术网

Java 我可以在JPA中获得带有占位符值的SQL查询吗

Java 我可以在JPA中获得带有占位符值的SQL查询吗,java,hibernate,jpa,jpql,Java,Hibernate,Jpa,Jpql,我使用JPA的方法如下 Query query = entityManager.createQuery(sqlQuery); queryBuilder.fillParametersToQuery(query); 我想获取包含所有占位符值的SQL查询字符串。JPA查询参数 JPA查询参数有两种风格 位置参数表示法 命名参数表示法 位置参数表示法: 顾名思义,JPA查询参数是用数字表示的,这种类型的符号示例如下 SELECT e FROM Employee e WHERE e.sa

我使用JPA的方法如下

    Query query = entityManager.createQuery(sqlQuery);
    queryBuilder.fillParametersToQuery(query);

我想获取包含所有占位符值的SQL查询字符串。

JPA查询参数

JPA查询参数有两种风格

  • 位置参数表示法
  • 命名参数表示法
  • 位置参数表示法

    顾名思义,JPA查询参数是用数字表示的,这种类型的符号示例如下

    SELECT e
    FROM Employee e
    WHERE e.salary > ?1
    
    选择e 来自雇员e 其中e.salary>?1 这里,1是位置参数,1是其位置。如果要执行此查询,则必须使用参数的位置设置参数值

    query.setParameter(1, salary).getResultList();
    
    query.setParameter(1,salary).getResultList(); 此语句设置JPQL中指定的JPA查询参数的值并执行查询

    命名参数表示法

    带有命名参数符号的JPA查询参数如下

    SELECT e
    FROM Employee e
    WHERE e.name = :name
    
    query.setParameter("name",employeeName);
    
    选择e 来自雇员e 其中e.name=:name 这里,:name是命名参数。它将保存运行时传递的name的值。参数被传递给这样的查询,如下所示

    SELECT e
    FROM Employee e
    WHERE e.name = :name
    
    query.setParameter("name",employeeName);
    
    query.setParameter(“名称”,employeeName);
    这里,name是查询中指定的参数名称,employeeName是String类型的变量。

    JPA查询参数

    JPA查询参数有两种风格

  • 位置参数表示法
  • 命名参数表示法
  • 位置参数表示法

    顾名思义,JPA查询参数是用数字表示的,这种类型的符号示例如下

    SELECT e
    FROM Employee e
    WHERE e.salary > ?1
    
    选择e 来自雇员e 其中e.salary>?1 这里,1是位置参数,1是其位置。如果要执行此查询,则必须使用参数的位置设置参数值

    query.setParameter(1, salary).getResultList();
    
    query.setParameter(1,salary).getResultList(); 此语句设置JPQL中指定的JPA查询参数的值并执行查询

    命名参数表示法

    带有命名参数符号的JPA查询参数如下

    SELECT e
    FROM Employee e
    WHERE e.name = :name
    
    query.setParameter("name",employeeName);
    
    选择e 来自雇员e 其中e.name=:name 这里,:name是命名参数。它将保存运行时传递的name的值。参数被传递给这样的查询,如下所示

    SELECT e
    FROM Employee e
    WHERE e.name = :name
    
    query.setParameter("name",employeeName);
    
    query.setParameter(“名称”,employeeName);
    在这里,name是查询中指定的参数名称,employeeName是字符串类型的变量。

    可能重复?FWIW传递给
    createQuery
    的查询不是SQLmaybe-duplicate?FWIW传递给
    createQuery
    的查询不是SQL