In Hibernate 3.6 migriert hatten wir einen funktionierenden Code sowohl MySQL- und Oracle:Unterschiedliches Verhalten von GenerationType.AUTO + @SequenceGenerator wenn aus dem Ruhezustand 3,6-5,1
@Id
@Column(name = "id", nullable = false)
@SequenceGenerator(name = "applicationEventLog", sequenceName = "S_APPLICATION_EVENT_LOG")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "applicationEventLog")
private Integer id;
Auf MySql Autoincrement verwenden und auf Oracle war es unter Verwendung der mit sequenceName
angegebenen Sequenz. Es ist also eine Sequenz, die von uns in db erstellt wurde, nicht von einem Winterschlaf.
Nach der Aktualisierung von Hibernate auf 5.1 verwendet es nicht mehr die in @SequenceGenerator
angegebene Sequenz, sondern verwendet hibernate_sequence
und die IDs stehen in Konflikt mit den vorhandenen. Wenn ich Generation zu FOLGE ändern:
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "applicationEventLog")
es nicht verwenden, um die angegebenen Reihenfolge, aber SEQUENCE ist MySql nicht anwendbar.
Gibt es eine Möglichkeit, das alte Verhalten zu erreichen: GenerationType.AUTO
zu haben, aber die Sequenz mit dem in @SequenceGenerator
angegebenen Namen verwenden?
Sie können zum alten Verhalten zurückkehren, indem Sie die Eigenschaft hibernate.id.new_generator_mappings auf false setzen, z Im Frühjahr geben Sie Folgendes an: false . Diese Eigenschaft ist standardmäßig in Hibernate 5+ –