实体:
@Getter
@Setter
@NoArgsConstructor
@Entity
@ToString
@DynamicUpdate
@Table(name = "flow_plan_details")
public class FlowPlanDetails extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@NotNull(groups = Existing.class)
@Null(groups = New.class)
private Long flowPlanId;
private Integer itemNbr;
private String itemDescription;
private String season;
private Integer fiscalYear;
private String catDesc;
private String subcatDesc;
private String gmm;
private String dmm;
private String planStatus;
private String channel;
private Boolean isLcl;
private String imageUrl;
private Integer carryOverItemNbr;
private Integer palletQty;
private Integer totalContQty;
private Integer commitmentQty;
private Integer defaultPresentation;
private LocalDate inClubDate;
private LocalDate oosDate;
private String eventCode;
private Integer clubCount;
private Integer percContainerRoundUp;
private String portOfOrigin;
private String productId;
private String flowRounding;
private String breakdownCalculation;
private Integer wos;
private Integer lastWeekToReceive;
private String targetOhRule;
private Float itemCost;
private Float itemRetail;
private Float shippingCostPerPallet;
private Float shippingCostPerContainer;
private Float profitPerItem;
private Float lostSale;
private Float containerShippingCost;
private Float totalCost;
private String holidayName;
private LocalDate holidayStartDate;
private LocalDate holidayEndDate;
private LocalDate holidayDate;
private String applyHoliday;
private Float plannedContainers;
private Float plannedPallets;
private Float flowContainers;
private Float flowPallets;
private Float differenceInContainers;
private Float differenceInPallets;
private LocalDateTime lastGeneratedFlowPlan;
private Long rolloutId;
private Boolean isRolloutRefreshRequired;
private Boolean isArchived = false;
private Float weight;
private Float dimension1;
private Float dimension2;
private Float dimension3;
private Boolean sorted;
private String impactDropdown;
private Boolean isReadyForScgs;
private String finalizedStatus;
public interface Existing {
}
public interface New {
}
public String getFlowplanIdWithName()
{
return this.getFlowPlanId().toString()+" - "+this.getItemDescription()+" - "+ this.getChannel();
}
}
我正在运行这个查询:
@Query("""
select f from FlowPlanDetails f
where f.last_updated_on between :startDate and :endDate
and f.plan_status=:planStatus and f.is_archived=:isArchived
and f.cat_desc= :catDesc
""") //(:catDesc is NULL OR f.cat_desc= :catDesc)
Page<FlowPlanDetails> customSpotQuery(@Param("catDesc") String catDesc,
@Param("startDate") ZonedDateTime startDate,
@Param("endDate") ZonedDateTime endDate,
@Param("planStatus") String planStatus,
@Param("isArchived") Boolean isArchived, Pageable page);
我收到此错误:
原因:java.lang.IllegalArgumentException:org.hibernate.QueryException:无法解析属性:last_updated_on:com.walmart.sams.services.allocation.configuration.service.model.FlowPlanDetails [从 com.walmart.sams.services.allocation.configuration.service.model.FlowPlanDetails f 中选择 f,其中 f.last_updated_on 位于:startDate 和:endDate 之间且 f.plan_status=:planStatus 且 f.is_archived=:isArchived 且 f.cat_desc=:catDesc]
现在 last_updated_on 列来自 BaseEntity。如何解决?
JPQL 使用实体属性名称(Java 类中的字段或 getter/setter 方法),而不是实际的数据库列名称。因此,如果您的
last_updated_on
是类中的字段,并且您的实体使用 camelCase 作为属性名称,则您应该在查询中BaseEntity
使用而不是。f.lastUpdatedOn
f.last_updated_on