ОШИБКА: метод вызвал исключение «java.lang.NoClassDefFoundError». Невозможно вычислить com.querydsl.jpa.JPASubQuery.toString()
Код: Выделить всё
public class CustomizedMemberCouponRepositoryImpl extends QuerydslRepositorySupport
implements CustomizedMemberCouponRepository {
public CustomizedMemberCouponRepositoryImpl() {
super(MemberCoupon.class);
}
@Override
public List findGeneralCouponsByMemberId(Long memberId, boolean validOnly) {
QMemberCoupon memberCoupon = QMemberCoupon.memberCoupon;
QCoupon coupon = QCoupon.coupon;
JPQLQuery query = select(Projections.constructor(GetMemberCouponResponse.class,
memberCoupon.id,
coupon.code,
coupon.name,
coupon.discountAmount,
coupon.discountType,
coupon.maxDiscountAmount,
coupon.minPurchaseAmount,
coupon.startedAt,
coupon.expirationAt))
.from(memberCoupon)
.join(memberCoupon.coupon, coupon)
.where(memberCoupon.memberId.eq(memberId)
.and(coupon.code.startsWith("G")));
if (validOnly) {
query.where(
coupon.startedAt.before(LocalDateTime.now()),
coupon.expirationAt.after(LocalDateTime.now()),
memberCoupon.status.eq(MemberCouponStatus.UNUSED)
);
}
return query.fetch();
}
Код: Выделить всё
@Builder
public record GetMemberCouponResponse(Long memberCouponId, String code, String name, long discountAmount,
DiscountType discountType, long maxDiscountAmount, long minPurchaseAmount,
LocalDateTime startedAt, LocalDateTime expirationAt) {
public static GetMemberCouponResponse fromEntity(MemberCoupon memberCoupon) {
return GetMemberCouponResponse.builder()
.memberCouponId(memberCoupon.getId())
.code(memberCoupon.getCoupon().getCode())
.name(memberCoupon.getCoupon().getName())
.discountAmount(memberCoupon.getCoupon().getDiscountAmount())
.discountType(memberCoupon.getCoupon().getDiscountType())
.maxDiscountAmount(memberCoupon.getCoupon().getMaxDiscountAmount())
.minPurchaseAmount(memberCoupon.getCoupon().getMinPurchaseAmount())
.startedAt(memberCoupon.getCoupon().getStartedAt())
.expirationAt(memberCoupon.getCoupon().getExpirationAt())
.build();
}
}
Я также пробовал удалить @Builder из DTO и использовать сгенерированный класс Q, но это не сработало. Я подозреваю, что ошибка может быть связана с процессом преобразования DTO.
Подробнее здесь: https://stackoverflow.com/questions/786 ... find-query
Мобильная версия