java - ClassCastException : org. hibernate.hql.internal.ast.tree.SqlNode 无法转换为 org.hibernate.hql.internal.ast.tree.PathNode

标签 java hibernate spring-boot spring-data-jpa

我有连接到 maria db 以获取数据的服务。我的存储库中有以下方法来获取订单数据:

@Query("select new Order(o.orderNumber, coalesce(o.orderId, ''), coalesce(o.env, ''), coalesce(o.poNumber, ''), coalesce(o.qty, ''), coalesce(o.sku, ''), "
            + " coalesce(o.customerNumber, ''), coalesce(o.portfolio, ''), coalesce(o.custEmail, '')) "
            + "from Order o where o.portfolio=?1 order by o.orderNumber desc")
    public List<Order> findAllOrder(String portfolio);

当我尝试启动服务时,它抛出以下错误:

ClassCastException: org.hibernate.hql.internal.ast.tree.SqlNode cannot be cast to org.hibernate.hql.internal.ast.tree.PathNode

关于如何解决这个问题有什么想法吗?感谢您的帮助。

实体:

@Entity
@Table(name = "orders")
public class Order {

    private Long orderNumber;
private String orderId;
private String env;
private String poNumber;
private String qty;
private String orderItem;
private String sku;
private String status;
private String portfolio;
private Long customerNumber;
private int requestId;
private int recordId;
private String custEmail;
 public Order(Long orderNumber, String orderId, String env, String poNumber, String qty, String sku,
            Long customerNumber, String portfolio, String custEmail) {
        this.orderNumber = orderNumber;
        this.orderId = orderId;
        this.env = env;
        this.poNumber = poNumber;
        this.qty = qty;
        this.sku = sku;
        this.customerNumber = customerNumber;
        this.portfolio = portfolio;
        this.custEmail = custEmail;
    }
}

最佳答案

@Query中使用类的完整引用(带有包名称)。

假设您的 Order 类位于您的 com.earth.project 包中,则查询将为

@Query("select new com.earth.project.Order(o.orderNumber, coalesce(o.orderId, ''), coalesce(o.env, ''), coalesce(o.poNumber, ''), coalesce(o.qty, ''), coalesce(o.sku, ''), "
            + " coalesce(o.customerNumber, ''), coalesce(o.portfolio, ''), coalesce(o.custEmail, '')) "
            + "from Order o where o.portfolio=?1 order by o.orderNumber desc")
    public List<Order> findAllOrder(String portfolio);

关于java - ClassCastException : org. hibernate.hql.internal.ast.tree.SqlNode 无法转换为 org.hibernate.hql.internal.ast.tree.PathNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61055465/

相关文章:

java - JPA:如何处理多个实体

java - 读取 Java EE Web 项目中的文件

java - 如何在java中比较两个对象(具有未排序的值)

java - 在 Netbeans 中添加新的 Web 服务

java - JPA 中多列的不同

java - 在 Hibernate 中使用 Criteria 时如何访问内部属性的内部?

java - 如何在 Hibernate HQL 中使用 Oracle 的 regexp_like?

java - Spring Boot 2.x 中 HikariCP 默认有连接池吗?

java - Thymeleaf 不适用于驼峰类字段

java - MapReduce 与 Hive 的结合