0
votes

Problèmes avec la relation d'un à plusieurs

J'ai des problèmes avec la relation d'un à plusieurs, de raconter que je veux juste utiliser l'ID utilisateur, je ne veux pas créer un nouveau, je mets mon code xxx

mon L'entité favorite est xxx

dans swagger i obtenez ce xxx

Je ne veux pas créer un nouvel utilisateur, L'utilisateur est déjà créé, j'ai juste besoin d'utiliser votre identifiant pour y réfrir


5 commentaires

Êtes-vous sûr de vouloir utiliser votre classe d'entité comme corps de la demande? Votre exposition de votre structure de table qui pourrait être une question de sécurité


@Coder Quelle est votre solution, pouvez-vous me répondre s'il vous plaît


Pourquoi ne pas créer de fabriité et l'utiliser plutôt que d'utiliser Faourite directement dans la demande? Est-ce l'exigence?


@Coder je devrais utiliser cette pathvariable?


@Coder puis-je utiliser PathVariable Iduser et PathVariable NomFavorite?


3 Réponses :


2
votes

Vous devez récupérer votre utilisateur existant et le mettre là-bas comme objet préféré.user (Attribuez-le). De cette façon, cela fonctionnera.

Je ne suis pas très clair avec votre spécification Swagger. Utilisez-vous une sorte de schéma JSON?


1 commentaires

Puis-je utiliser PathVariable Iduser et PathVariable NomFavorite?



4
votes

Vous devez créer un nouvel utilisateur ou récupérer tout utilisateur existant et défini dans un objet préféré. Si dans la favori.User.Id est présent, il ne créera pas de nouvel utilisateur.

Même vous devez définir cascade sur cascadetype.detach pour éviter la création ou la mise à jour de l'objet utilisateur à partir d'un objet favorisé. Il lancera une erreur si Favoris.User.ID est NULL au lieu de créer un nouvel objet utilisateur. xxx


2 commentaires

Puis-je utiliser PathVariable Iduser et PathVariable NomFavorite?


@Asdww PathVariable est visible et est inapproprié ici. Chaque fois que nous créons ou mettons à jour un objet de DB entier, nous l'envoyons dans Demande de Demande en tant que demande postale. Il ne sera donc pas visible dans l'URL de la demande.



1
votes

Votre structure d'entité va bien. Vous devez récupérer l'utilisateur à partir de userpository code> et attribuez-le dans l'entité code> Favori. IMHO, s'il vous plaît introduire la classe favoriteto. Donc, les modèles d'entité ne seront pas exposés.

Favoritédto.java h3> xxx pré>

Votre implémentation de service doit vérifier la disponibilité de l'utilisateur, puis l'affecter au codage codage > Entité. P>

ServiceImpl.java h3> xxx pré>

Votre demande Swagger mise à jour JSON Comme ci-dessous P>

{
  "element": "string",
  "userId": long 
}


4 commentaires

Mais dans Swagger, montre cet "utilisateur": {"Email": "String", "ID": 0, "Life": "Suspendre", "Nom": "String", "String"},


J'ai cette structure contrôleur-> services-> référentiel, dans le contrôleur, je devrais remplir les champs ou en service?


C'est correct. Parce que nous avons défini l'objet utilisateur dans la classe préférée. Si vous ne voulez pas définir l'objet utilisateur en favoris, vous pouvez définir le champ ID utilisateur.


Pouvez-vous me donner un exemple de votre deuxième option