Java/Hibernate: Wie kann ich einfügen, die einen bestimmten Wert für eine Spalte mit autoincrement / @GeneratedValue

Ich habe eine Tabelle mit einer Spalte id, die autoincrements und ein Java-Objekt mit einem getter versehen mit @GeneratedValue(strategy = GenerationType.AUTO). Dies funktioniert beim speichern, allerdings für einen unit-test-ich möchte geben Sie die ID, so dass Sie deterministisch ist. In MySQL (die DB, die wir verwenden) ich kann geben Sie einen Wert in der insert-Anweisung und alles funktioniert einwandfrei. Jedoch wenn ich das Feld id in das java-Objekt und versuchen zu bestehen, hibernate wirft eine Ausnahme. Wie kann ich den Ruhezustand, lassen Sie mich geben Sie einen Wert für eine Regel generierten Wert?

Feld Beispiel:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
    return this.id;
}

Funktioniert in MySQL:

INSERT INTO myTable (id, str)
VALUES (10,'this works!')

Funktioniert nicht:

MyObject myObject = new MyObject();
myObject.setId(10L); //remove this line and hibernate saves ok
myObject.setStr("this does not work.");
daoForMyObject.persist(myObject); //throws org.springframework.dao.DataIntegrityViolationException

Dank im Voraus für die Hilfe ein guter test-driven-developer!

  • Dies wurde vorher gefragt und es gibt einen Lösungsvorschlag hier. Hoffe, das hilft. Dieser Beitrag wurde verlinkt von dieser stackoverflow-Fragen.
InformationsquelleAutor Zugwalt | 2011-09-10
Schreibe einen Kommentar