Je suis nouveau dans hibernate.Lorsque j'enregistre une entité particulière, alors il réécrit les données de l'existant.
J'ai utilisé ID comme auto généré comme ci-dessous: P>
mysql> select * from stud; +----+--------+------+ | id | city | name | +----+--------+------+ | 1 | Mumbai | Test | | 2 | Mumbai | Test | +----+--------+------+ 2 rows in set (0.00 sec)
5 Réponses :
Si vous souhaitez effectuer une mise à jour plutôt que d'ajouter une nouvelle ligne à la base de données à chaque fois, vous devez extraire l'entité souhaitée, faites les mises à jour souhaitées, puis enregistrez l'entité à nouveau. P>
Essayez d'utiliser Notez que les entités JPA (hibernate) sont identifiées par leur SaveOpdate (..) CODE> P>
@ID code>. Si votre objet a le même identifiant que celui de la DB, une mise à jour se produira. Sinon, logiquement, l'insertion se produira. P>
De son exemple, il semble qu'il exécute un exemple de ligne de commande et s'attendre à ce que les exécutions ultérieures ne puisse pas ajouter de nouvelles entrées à la base de données.
Oui c'est vrai..mais y a-t-il d'autre manière pour cela? Si j'insère une valeur d'entité différente, il suffit de réécrire les données de l'une existante plutôt que de créer un nouvel enregistrement ..IF ID maximum de ma table est 2 que les données insérées suivantes doivent être sur 3ème.
Je réalise que ceci est posé il y a un an, mais j'avais exactement le même problème que toi et j'ai pensé que je l'affaiterais au cas où quelqu'un d'autre l'ait. P>
Il s'est avéré qu'il s'agissait d'un paramètre de mon usine de session: P>
Recherchez le réglage Il y a quelques valeurs différentes que vous pouvez choisir ici. Pour le développement, je crois que vous voudriez qu'il soit défini update strong> em> car il créera de nouvelles tables pour vous si elles n'existent pas déjà (comme la création), mais si la table existe déjà qu'il mettra à jour le schéma. p>
Pour la production, vous devrait strong> em> bâton sur valider strong> car il ne modifiera pas votre schéma, juste validez em> ça: ) p>
Pour plus de détails sur les différentes valeurs, vérifiez Cette excellente réponse p>
Ajout d'une ligne dans votre table de base de données créée peut aider auto_incrènement incrémente le compte ID comme et lorsque vous ajoutez une ligne dans la table. P> P>
Si vous utilisez le générateur de classe Auto, les enregistrements seront automatiquement ajoutés à un nouvel identifiant incrémenté automatique. Et les mêmes données dans l'enregistrement précédent seront également écrites dans l'ID suivant également. Donc, si vous insérez une nouvelle ligne, modifiez le test de données et Mumbai chaque fois que vous exécutez l'application (mauvaise pratique) ou utilisez la classe de scanner pour lire les données du clavier et la transmettre de manière dynamique au setter. J'espère que vous l'avez compris. P>