Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir des erreurs d'entrée en double d'Hibernate, MySQL est-il à blâmer ?

L'incrément est définitivement mauvais si vous avez plus d'un processus écrivant dans la même table - vous êtes obligé d'avoir des collisions.

Puisqu'il s'agit de MySQL, la chose la plus simple à utiliser serait identity . Dans votre mappage Hibernate :

<generator class="identity"/>

Dans votre script MySQL :

CREATE TABLE IF NOT EXISTS `my_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data1` int(11) NOT NULL,
  `data2` int(11) NOT NULL,
  `timestamp` datetime default NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Pour modifier un tableau existant :

ALTER TABLE `my_table`
  CHANGE COLUMN `id` `id` int(11) NOT NULL AUTO_INCREMENT=$NEW_VALUE$;

où $NEW_VALUE$ doit être remplacé par le prochain identifiant disponible afin que la séquence ne soit pas réinitialisée à 1.