java - 错误: org. hibernate.PropertyNotFoundException : no appropriate constructor in class: com. a.offering.dto.SellerDetailsDto

标签 java spring hibernate orm

我正在使用以下查询 String queryString = "选择 NEW com.h.offering.dto.SellerDetailsDto(p.productId,p.sellerId, p.sellerSku, p.sellPrice,"+ “p.transferPrice,p.sellerMRP,p.aCommission,p.baseShippingFee,p.addnShippingFee,” + “p.propogationLevel,p.propogationValue,a.warehouseName,a.quantity,a.maxShippingTime,a.minShippingTime)” +“来自 PriceDetails p,AvailabilityDetails a ” +“其中a.productId = p.productId” +“并且a.sellerSku = p.sellerSku” + "and a.sellerId = :sellerId";

执行时出现错误

org.hibernate.hql.ast.QuerySyntaxException:无法在类 [com.a.offering.dto.SellerDetailsDto] 上找到适当的构造函数 [从 com 选择新的 com.s.offering.dto.SellerDetailsDto(p.productId) .a.offering.db.domain.PriceDetails p、com.a.offering.db.domain.AvailabilityDetails a 其中 a.productId = p.productId 且 a.sellerSku = p.sellerSku 且 a.sellerId = :sellerId] 在 org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54) 在 org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47) 在 org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82) 在org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:261) 在org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185) 在 org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)

等等...

我无法找出错误。帮帮我吧

The code for SellerDetailsDto.java is 

package com.a.offering.dto;
public class SellerDetailsDto {
    public String productId;
    public String sellerId;
    public String sellerSku;
    public Double sellPrice;
    public Double transferPrice;
    public Double sellerMRP;
    public Double a;
    public Double baseShippingFee;
    public Double addnShippingFee;
    public String propogationLevel;
    public String propogationValue;
    public String warehouseName;
    public int quantity;
    public int maxShippingTime;
    public int minShippingTime;

    public String getProductId() {
        return productId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }

    public String getSellerId() {
        return sellerId;
    }

    public void setSellerId(String sellerId) {
        this.sellerId = sellerId;
    }

    public String getSellerSku() {
        return sellerSku;
    }

    public void setSellerSku(String sellerSku) {
        this.sellerSku = sellerSku;
    }

    public String getWarehouseName() {
        return warehouseName;
    }

    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public int getMaxShippingTime() {
        return maxShippingTime;
    }

    public void setMaxShippingTime(int maxShippingTime) {
        this.maxShippingTime = maxShippingTime;
    }

    public int getMinShippingTime() {
        return minShippingTime;
    }

    public void setMinShippingTime(int minShippingTime) {
        this.minShippingTime = minShippingTime;
    }

    public Double getSellPrice() {
        return sellPrice;
    }

    public void setSellPrice(Double sellPrice) {
        this.sellPrice = sellPrice;
    }

    public Double getTransferPrice() {
        return transferPrice;
    }

    public void setTransferPrice(Double transferPrice) {
        this.transferPrice = transferPrice;
    }

    public Double getSellerMRP() {
        return sellerMRP;
    }

    public void setSellerMRP(Double sellerMRP) {
        this.sellerMRP = sellerMRP;
    }

    public Double a() {
        return a;
    }

    public void a(Double aa) {

一个}

    public Double getBaseShippingFee() {
        return baseShippingFee;
    }

    public void setBaseShippingFee(Double baseShippingFee) {
        this.baseShippingFee = baseShippingFee;
    }

    public Double getAddnShippingFee() {
        return addnShippingFee;
    }

    public void setAddnShippingFee(Double addnShippingFee) {
        this.addnShippingFee = addnShippingFee;
    }

    public String getPropogationLevel() {
        return propogationLevel;
    }

    public void setPropogationLevel(String propogationLevel) {
        this.propogationLevel = propogationLevel;
    }

    public String getPropogationValue() {
        return propogationValue;
    }

    public void setPropogationValue(String propogationValue) {
        this.propogationValue = propogationValue;
    }

}

最佳答案

Hibernate 需要一个至少具有包私有(private)(即默认)可见性的构造函数。

通常,无参数构造函数是必要的(您隐式地拥有它),但对于您的 select new ... SellerDetailsDto 需要一个带有您在 select 语句中给出的 15 个参数的构造函数。 (认为​​错误消息需要一个仅将 id 作为参数的构造函数 - 看起来错误来自不同的 select new 语句。)您没有这样的构造函数。

关于java - 错误: org. hibernate.PropertyNotFoundException : no appropriate constructor in class: com. a.offering.dto.SellerDetailsDto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10909405/

相关文章:

java - 在每个构建中执行 Maven 插件

java - 在 Java 中按值对数组元素进行分组(2 × 2、3 × 3 等)

Java 正则表达式检查包含网址的字符串

Spring Cloud Gateway 同时监听 HTTP 和 HTTPS?

java - JPA标准API : Iterate through list and create predicates

java - 没有 @Transactional 注释的 Spring 托管事务

java - Android进度条 只显示进度条,没有背景矩形框

spring - 使用 NamedParameterJDBCTemplate 进行插入时出现 "Invalid column type"异常

java - 如何使用 @patch 使用 jpa 存储库更新单个字段

java - Hibernate:添加一个对象(如果尚不存在)