2

次のクエリを使用しています。 aCommission,p.baseShippingFee,p.addnShippingFee, " + "p.propogationLevel,p.propogationValue,a.warehouseName,a.quantity,a.maxShippingTime,a.minShippingTime) " + "from PriceDetails p, AvailabilityDetails a " + "どこでa.productId = p.productId " + "および a.sellerSku = p.sellerSku " + "および a.sellerId = :sellerId";

実行中にエラーが発生しました

org.hibernate.hql.ast.QuerySyntaxException: クラス [com.a.offering.dto.SellerDetailsDto] で適切なコンストラクターが見つかりません [com.a から新しい com.s.offering.dto.SellerDetailsDto(p.productId) を選択します。 Offering.db.domain.PriceDetails p, com.a.offering.db.domain.AvailabilityDetails a where a.productId = p.productId and a.sellerSku = p.sellerSku and a.sellerId = :sellerId] at org.hibernate. org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47) で hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54) 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;
    }

}
4

3 に答える 3

4

Hibernate は、少なくともパッケージ プライベート (つまり、デフォルト) の可視性を持つコンストラクターを必要とします。

通常、パラメーターなしのコンストラクターが必要です (暗黙的に持っています) が、select new ...SellerDetailsDto には、select ステートメントで指定する 15 個のパラメーターを持つコンストラクターが必要です。(エラーメッセージは、パラメーターとして id のみを持つコンストラクターを要求すると考えました。エラーが別のステートメントから発生しているように見えますselect new。) そのようなコンストラクターはありません。

于 2012-06-06T06:56:54.927 に答える
1

問題は、hql クエリで渡すパラメーターを受け入れる SellerDetailsDto にコンストラクターがないことです。このコンストラクターをクラスに追加します。

public SellerDetailsDto(String productId, String sellerId,
            String sellerSku, Double sellPrice, Double transferPrice,
            Double sellerMRP, Double tradusCommission, Double baseShippingFee,
            Double addnShippingFee, String propogationLevel,
            String propogationValue, String warehouseName, int quantity,
            int maxShippingTime, int minShippingTime) {
        this.productId = productId;
        this.sellerId = sellerId;
        this.sellerSku = sellerSku;
        this.sellPrice = sellPrice;
        this.transferPrice = transferPrice;
        this.sellerMRP = sellerMRP;
        this.tradusCommission = tradusCommission;
        this.baseShippingFee = baseShippingFee;
        this.addnShippingFee = addnShippingFee;
        this.propogationLevel = propogationLevel;
        this.propogationValue = propogationValue;
        this.warehouseName = warehouseName;
        this.quantity = quantity;
        this.maxShippingTime = maxShippingTime;
        this.minShippingTime = minShippingTime;
    }

これにより、使用可能なデフォルトのコンストラクターがなくなるため、他のコードが機能しなくなる可能性があります。これを修正するには、デフォルトのコンストラクターも追加します。

public SellerDetailsDto() {}
于 2012-06-06T07:02:25.587 に答える
0

実際、これはルート pom ファイルの問題です。IDEにlombokをインストールし、ルートpomファイルにlombokの依存関係を追加したいのですが、うまくいくことを願っています

于 2021-08-25T09:36:16.427 に答える