Found a solution in this post : Strapi V4 populate Media and Dynamiczones from Components - #9 by nextrapi
And here is my controller :
const { createCoreController } = require("@strapi/strapi").factories;
module.exports = createCoreController("api::study.study", ({ strapi }) => ({
async findOne(ctx) {
const { id } = ctx.params;
const { query } = ctx;
const entity = await strapi.entityService.findMany("api::study.study", {
...query,
populate: {
blocks: {
populate: {
image: true,
keyNumber: {},
textImage: { populate: { image: true } },
},
},
},
});
const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
return this.transformResponse(sanitizedEntity);
},
}));```