2009-12-07 6 views
1

Ma question est de savoir comment obtenir l'ID suivant en utilisant NHibernate dans un mysql db pour une colonne d'auto-incrément ID?obtenir l'ID suivant

Merci,

+2

Soyez prudent avec ceci. Si vous obtenez l'ID suivant une microseconde avant que quelqu'un ajoute un autre enregistrement à la table, votre identifiant ne sera plus le suivant. – DOK

+0

Je suis le seul à utiliser le db –

Répondre

0

Vous allez créer une condition de course si vous faites cela. Pour répondre à votre question, je ne pense pas qu'il existe une façon spécifique pour Hibernate de vous donner cette information puisqu'aucune application ne peut vous donner cette information. En obtenant le "prochain identifiant", au moment où il vous renvoie ces données, il pourrait déjà être invalide. La façon la plus simple de penser est d'obtenir le last_insert_id() et d'y ajouter +1. Pourquoi ne publiez-vous pas plus d'informations sur ce que vous essayez d'accomplir et nous pouvons trouver une meilleure solution pour vous?

+0

J'ai expliqué plus mon problème. –

2

Sur la base de la description plus détaillée que vous donnez (? Comme une réponse) ci-dessous, il me semble que vous êtes à la recherche en effet pour la fonction NHibernate pour lire automatiquement les ID générés par la base de données: identity

Cela dira NHibernate la valeur de l'ID est déterminée par la base de données lors de l'insertion, il n'enverra pas de valeur dans le cadre de son instruction INSERT et il relira la valeur de la colonne ID après avoir effectué l'insertion. Mais vous devez indiquer à la base de données (dans la définition de table) qu'elle devrait générer automatiquement une valeur pour la colonne ID pour chaque enregistrement inséré ...

0

À condition que vous soyez seulement auteur à votre base de données alors vous pourriez obtenir votre application pour maintenir le numéro de séquence pour vous et allouer le numéro suivant vous-même.

Si vous voulez le faire, vous devez vous assurer que votre compteur d'applications est sécurisé.

Vous aurez également besoin d'un moyen d'obtenir le dernier numéro de séquence écrit lors du redémarrage de votre application.

Questions connexes