Ошибка вызова метода init; Вложенное исключение - java.lang.IllegalArgumentException: не управляемый тип: - PullRequest
0 голосов
/ 13 ноября 2018

Ниже находится мой простой объект POJO, который имеет все сопоставления. Обратите внимание, что это не объект Entity.

import javax.persistence.ColumnResult;
import javax.persistence.ConstructorResult;
import javax.persistence.NamedNativeQuery;
import javax.persistence.SqlResultSetMapping;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
@AllArgsConstructor
@SqlResultSetMapping(name = "refundReportMapping", classes = { @ConstructorResult(targetClass = RefundReport.class, columns = {
        @ColumnResult(name = "customer_name"),
        @ColumnResult(name = "hashed_email"), @ColumnResult(name = "address"),
        @ColumnResult(name = "partner_order"),
        @ColumnResult(name = "refund_amount") }) })
@NamedNativeQuery(name = "findRefundReportByStatusNamesParamsNative", query = "SELECT concat(bd.first_name,' ',bd.last_name) as 'customer_name',bd.email_address AS 'hashed_email',concat(bd.address1,' ',bd.address2) AS 'address',"
        + o.reservation_id AS 'partner_order',"
        + "(oa.principal_amount+oa.shipping_amount+oa.tax_amount) AS 'refund_amount'"
        + "FROM orders o, order_adjustments oa WHERE oa.status = :status"
        + "and o.buyer_detail_id=bd.buyer_detail_id and o.reservation_id=oa.order_id", resultClass = RefundReport.class, resultSetMapping = "refundReportMapping")
public class RefundReport {

    private String customerName, email, address, 
            partnerOrder;
    private BigDecimal partilaRefundAount;

}
public interface RefundReportRepository extends
        Repository<RefundReport, String> {

    List<RefundReport> findRefundReportByStatus(
            @Param("status") String status);

}

1 Ответ

0 голосов
/ 14 ноября 2018

Есть несколько проблем с этим кодом.

  1. Repository требуется два типа параметров. Тип сущности, для которой это хранилище, и тип идентификатора. Без указания этих типов Spring Data определяет Object для обоих типов, которые не работают, потому что Object не является управляемым объектом. Кроме того, если вы намереваетесь использовать RefundReport, это должен быть управляемый объект JPA.

  2. Как указал @ HaseebR7, аннотации для именованных запросов и т.п. также должны быть на объекте.

Поскольку кажется, что вы просто хотите выполнить запрос, вы можете использовать любую сущность, но это должна быть правильная сущность с идентификатором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...