Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist MySQL schuld an doppelten Eingabefehlern von Hibernate?

Inkrement ist definitiv schlecht, wenn Sie mehr als einen Prozess haben, der in dieselbe Tabelle schreibt - Sie werden zwangsläufig Kollisionen haben.

Da es sich um MySQL handelt, wäre identity am einfachsten zu verwenden . In Ihrem Hibernate-Mapping:

<generator class="identity"/>

In Ihrem MySQL-Skript:

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;

So ändern Sie eine vorhandene Tabelle:

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

wobei $NEW_VALUE$ durch die nächste verfügbare ID ersetzt werden sollte, damit die Sequenz nicht auf 1 zurückgesetzt wird.