2017-09-12 12 views
0

Je souhaite la fonctionnalité suivante dans le repos de données de printemps.Enregistrer ou fusionner l'entité de correctif

Si je poste un point de fin de ressource de collecte, le serveur doit vérifier si l'objet existe. si elle existe déjà, elle devrait exécuter la même fonctionnalité que pour les ressources d'élément de fusion. Si l'objet n'existe pas déjà, il devrait le créer.

Est-ce réalisable en repos de données de printemps. Si oui, alors comment?

Répondre

0

Si cela est possible dans votre cas d'utilisation, vous pouvez utiliser PUT au lieu de POST, car PUT devrait fonctionner comme prévu.

Solution avec POST

Vous pouvez obtenir le comportement souhaité avec Spring Data REST Event handlers.

Créez simplement une méthode Handler qui accepte votre entité et l'annotez avec @HandleBeforeCreate. Dans cette méthode, vous pouvez implémenter votre comportement, c'est-à-dire vérifier si l'objet existe et le mettre à jour manuellement ou simplement ne rien faire et laisser le Spring Data REST gérer la création de l'entité.

@RepositoryEventHandler 
public class EntityEventHandler { 

    @Autowired 
    private EntityService entityService; 

    @HandleBeforeCreate 
    public void handleEntityCreate(Entity e) { 
     if (entityService.exists(e)) { 
     entityService.update(e); 
     } 
    } 
} 

EDIT: Je viens de réaliser que vous devez également arrêter le créer un événement après votre mise à jour. Vous pouvez essayer de lancer une exception personnalisée et de la gérer pour renvoyer 200 et l'entité mise à jour.