Ich möchte Daten in mein Repository mit spezifischen IDs einfügen (nicht aktualisieren), aber wenn ich das tue, werden diese IDs ignoriert und die eingefügten Einträge haben einfach die nächste ID in der Sequenz.spring crudrepository mit spezifischer ID speichern
Entity entity = new Entity();
entity.setId(4l);
//..
Entity saved = repository.save(entity);
System.out.println(saved.getId()); // is 1l
Hier ist, wie mein Setup wie
@Entity
@Table(name = "ENTITY")
public class Entity {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
//...
}
@Repository
public interface SomeRepository extends CrudRepository<Entity, Long> {
}
sieht Ich habe auch versucht, die Erzeugung Strategie AUTO
ändern, aber dann bekomme ich
Table 'embedded-db.hibernate_sequence' doesn't exist
Wie kann ich Daten mit spezifischen ID einfügen während auch die IDs generiert werden können?
UPDATE
Ok, so dass ich herausgefunden, dass eine der Lösungen zwingt eine spezifische Sequenz zu verwenden, um die ID zu erzeugen und Erzeugungsstrategie AUTO
wie diese unter Verwendung von:
@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_seq_gen")
@SequenceGenerator(name="my_seq_gen", sequenceName="actual_seq_name")
private Long id;
Jedoch I Verwenden Sie mariaDb
für mein Test env und es unterstützt keine Sequenzen, so dass diese Lösung nicht für mich funktioniert. Gibt es einen anderen Weg, dies zu tun?
Es funktioniert, wenn ich es mit ID einfügen, aber ich brauche es auch IDs zu generieren, wenn sie nicht zur Verfügung gestellt werden. Wie für die Datenbank kann ich wirklich nicht sagen, wie für das Testen lokal ich MariaDb verwenden, und in der Produktion ist es auf Amazon Cloud, die auf wer weiß was läuft. – Benedictus
@Benedictus dann ist das ein subtil anderes Problem (und nicht etwas, das du in deiner ursprünglichen Frage erwähnt hast!). Wie fartpigs Antwort sagt, wäre eine pragmatische Lösung, eine "AbstractEntity" -Klasse zu haben, dann zwei untergeordnete Klassen mit unterschiedlichem ID-Zuweisungsverhalten. (Ich hoffe du hast eine gute Strategie um Kollisionen zu vermeiden !!!) – Catchwa