Skip to content

Converter called multiple times evaluating aggregation operation query methods #4712

@MrWangGang

Description

@MrWangGang

my Converter

@WritingConverter
public class EnumWriteConverter implements Converter<ConverterEnum, String> {
    public EnumWriteConverter() {
    }

    public String convert(ConverterEnum source) {
        return source.getValue();
    }
}

Pass the enumeration as a parameter,my enum impl -> ConverterEnum


    @Aggregation({
            "{$addFields: { '_idString': { $toString: '$_id' } }}",
            "{$match: { userId: ?0 }}",
            "{$lookup: { from: 't_sku_skill', localField: '_idString', foreignField: 'itemId', as: 'skuDetails' }}",
            "{$unwind: { path: '$skuDetails', preserveNullAndEmptyArrays: true }}",
            "{$match: { deletedEnum: ?1 }}",
            "{$sort: { availableEnum: 1 }}", // ASC
            "{$addFields: { quantity: '$skuDetails.quantity' }}",
            "{$project: { _idString: 0, skuDetails: 0 }}"
    })
    Flux<ItemSkillPO.AggregationSku> findBy(String userId, EnumCommerceItemDeletedEnum deleted , Pageable pageable);

"I found that the Converter was called multiple times, and the source was always the same enumeration, ENUM_COMMERCE_ITEM_DELETED_UNDELETE, because I called this query method in the business logic."

   @Override
    public Flux<ItemSkillPO.AggregationSku> page(String userId, Pageable pageable) {
        return repository.findBy(userId,ENUM_COMMERCE_ITEM_DELETED_UNDELETE,pageable);
    }

I only called the query method once, but the Converter was called multiple times. Why?

Metadata

Metadata

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions