当前位置: 首页 > 知识库问答 >
问题:

jpql构造函数表达式查询org.PostgreSQL.util.PSQLException

锺离高丽
2023-03-14

我使用spring data jpa,我想从postgres表中检索特定的列,我遵循了几个链接来检索特定的列spring jpa选择了我找到的关于jpql构造函数表达式查询的特定列来检索特定的列,

我在respository类上使用了jpql表达式

public interface DeviceCrudRepository  extends CrudRepository<Device,String>{
public Device findByBarcode(String barcode);

@Query(value = "select new com.hello.world.model.Device (d.deviceName,d.deviceType,d.deviceDescription ,d.deviceRentalStatus) from devicedetails d where d.scancode=:scancode", nativeQuery = true)
public Device findDeviceDetailsByBarcode(@Param("d.scancode") String d.scancode);
public Device(String deviceName, String deviceType, String deviceDescription, String deviceRentalStatus) {
        super();
        this.deviceName = deviceName;
        this.deviceType = deviceType;
        this.deviceDescription = deviceDescription;
        this.deviceRentalStatus = deviceRentalStatus;
    }

psqlException:error:语法错误位于或接近“.”位置:15在org.postgreql.core.v3.queryexecutorimpl.receiveerrorresponse(queryexecutorimpl.java:2477)~[postgreSQL-42.1.4.jar:42.1.4]在org.postgreSQL L.core.v3.queryexecutorimpl.processResults(queryexecutorimpl.java:2190)~[postgreSQL-42.1.4.jar:42.1.4]在org.postgreSQL L.core.v3.queryexecutorimpl.execute 28)~[PostgreSQL-42.1.4.jar:42.1.4]在org.postgreql.jdbc.pgstatement.execute(PGStatement.java:354)~[PostgreSQL-42.1.4.jar:42.1.4]在org.Postgreql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:169)~[PostgreSQL-42.1.4.jar:42.1.4]在

当我签入日志时,生成的查询是

html" target="_blank">select new com.hello.world.model.Device (d.deviceName,d.deviceType,d.deviceDescription ,d.deviceRentalStatus) from devicedetails d where d.scancode=?

它不能将jpql表达式转换为查询,它显示包名的异常,当我使用类名时,它显示括号附近的异常,所以我猜jpql表达式没有被翻译,我是否缺少任何依赖关系?

共有1个答案

颜志业
2023-03-14

因为PGSQL不是JPQL,所以它不理解您的查询是正常的:)删除nativeQuery=true

 类似资料:
  • 我有一个表ROOT和一个包含与ROOT相关行的表子级。 我想为根的每一行检索一个对象,该对象包含根对象以及与CHILDREN表中的ROOT.id相关的行数。 这可以很容易地在SQL中实现,但我想知道如何在JPQL中编写 在SQL中: 知道吗?

  • 查询表达式可以作为过滤,分组,注解或者是聚合的一个值或者是计算。这里(文档中)有很多内置表达式可以帮助你完成自己的查询。表达式可以组合,甚至是嵌套,来完成更加复杂的计算 支持的算术 Django支持在查询表达式使用加减乘除,求模,幂运算,Python常量,变量甚至是其它表达式。 New in Django 1.7: 增加了对指数运算符**的支持。 一些例子 Changed in Django 1.

  • 查询表达式 查询表达式支持大部分的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式: where('字段名','表达式','查询条件'); whereOr('字段名','表达式','查询条件'); 5.1还支持新的查询方法 whereField('表达式','查询条件'); whereOrField('表达式','查询条件'); Field使用字段的驼峰命名方式。 表达式不

  • 我有一个使用构造函数表达式的查询。在大多数情况下,它是工作的,但是我想减少数据库上的查询数量。所以我尝试了FETCH和@EntityGgraph,但是我得到了 org.springframework.dao.InvalidDataAccessResourceUsageException:查询指定的联接提取,但提取关联的所有者不在选择列表中[FromElement{explicit,不是集合联接,提

  • 在像 JavaScript 这种没有类的概念的语言中,如果想创建特定的实例对象,可以通过在函数之前加上 new 关键字来实现。在调用构造函数时可以传入参数以初始化实例对象的属性值。用这种方式创建的实例对象的属性和方法是独立的,不与其他实例对象共享。 在 JavaScript 中,构造函数一般长这样: function FamilyMember( name, age ) { this.name =

  • 假设我们有下表,命名为“文档”: 两个*日期列是时间戳,而另一个都是字符串(甚至是) 目前我在Spring存储库中使用了以下本机查询: 如您所见,这必须用作本机查询,因为JPA不支持子句中的选择查询。现在我必须将此查询转换为JPQL查询,以使其独立于数据库。这在某种程度上是可能的吗?欢迎其他方法,例如使用规范或类似的...

  • 上面写着编译错误 Employee::new、1L、“”、“ 无法解析构造函数。

  • 在 JavaScript 中,函数不是“神奇的语言结构”,而是一种特殊的值。 我们在前面章节使用的语法称为 函数声明: function sayHi() { alert( "Hello" ); } 另一种创建函数的语法称为 函数表达式。 通常会写成这样: let sayHi = function() { alert( "Hello" ); }; 在这里,函数被创建并像其他赋值一样,被明确地