Skip to content

Converter called multiple times evaluating aggregation operation query methods #4712

Closed
@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

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions