Я пытаюсь использовать возможности QueryDSL, выполняя некоторые операции, пока я все еще создаю Список определенных DTO с информацией, поступающей из моей базы данных, делая это, я могу избежать беспорядочных операций после этого. В приведенном ниже примере это глупо представление о том, что я пытаюсь достичь:Математические операции со значениями объектов (VO) с использованием QueryDSL
public class Product {
private Quantity total;
//more code here
}
public class Quantity {
//code here
public Quantity multiply(Quantity quantity) {
return Quantity.of(this.value.multiply(quantity.numberValue());
}
//more code here
}
public static Function<JPQLQuery, List<MyDTO>> someMethod() {
return q -> {
//some code here
q.from(...)
//more code here
.list(new QMyDTO(qProduct.total.multiply(qProduct.total).sum()));
};
}
Проблема заключается в том, что QueryDSL использует NumberExpression
обеспечить некоторые операции, такие как сумма, умножение и т.д., что хорошо работает с типами как BigDecimal
, но не работает с пользовательскими типами, такими как мой объект значения Quantity
. Я пытался что-то придумать, но у меня не было никакого успеха, и я не нашел ничего подобного.
Есть ли что-либо, что могло бы помочь мне в достижении этого?
Спасибо вам еще раз. Я попробовал делегата раньше, но без части «Выражения». Это сделало трюк –