Hallo,
Meine Noobi-Anwendung scheint ein Stück vorangekommen zu sein.
Nun erlebe ich folgende Situation beim Insert in die Postgres-DB:
Der Insert funktioniert, die ID wird auch vergeben, aber es scheint so, dass das dafür definierte Sequence-Objekt nicht wirklich berührt wird.
Ich habe dazu mal aus Spaß auch eine andere noch nicht von mir auf nextval abgefragten Sequence verwendet, um erstaunliches zu sehen...
Zuvor hatte ich es mit der vorgesehenen seq_skill versucht bekam anfangs als IDs drolligerweise negative Zahlen. die seq_skill wurde aber scheinbar nicht von der Anwendung berührt, denn die Nummern erhöhten sich nur bei meinen manuellen Nextval-Aufrufen und waren noch dazu positiv!
Als ich dann auf einer glücklichen Seite nachlas, was ich offenbar machen muss, verwendete ich dann den Parameter allocationSize identisch mit der Definition für den SEQ-Cashe. Zwar waren es nun wieder ganz andere Zahlen für die IDs aber dafür positiv.
Dann machte ich die Probe auf Example ...
Hier habe ich vor als auch nach dem Versuch die noch jungfräuliche seq_mitarbeiter verwendet und stellte nach dem Insert weiterhin Jungfräulichkeit fest

[CODE lang="java" title="Hier wieder mein aktueller Skill-Bean" highlight="30"]package de.cmk.todo.restservices.skillmanager;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name= "\"skill\"", schema = "\"projekt-skill-verwalter\"")
public class Skill {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "skill_generator")
@SequenceGenerator(name="skill_generator", sequenceName = "projekt-skill-verwalter.seq_mitarbeiter", allocationSize=10)
@EqualsAndHashCode.Include
@Column(name="skill_id")
private Long id;
private String name;
@Column(name="beschreibung")
private String description;
}[/CODE]
Warum sind eigentlich DB-SEQs tatsächlich zu definieren, wenn sie anscheinend nicht ernsthaft verwendet werden?
Was übersehe ich hier?
Meine Noobi-Anwendung scheint ein Stück vorangekommen zu sein.
Nun erlebe ich folgende Situation beim Insert in die Postgres-DB:
Der Insert funktioniert, die ID wird auch vergeben, aber es scheint so, dass das dafür definierte Sequence-Objekt nicht wirklich berührt wird.
Ich habe dazu mal aus Spaß auch eine andere noch nicht von mir auf nextval abgefragten Sequence verwendet, um erstaunliches zu sehen...
Zuvor hatte ich es mit der vorgesehenen seq_skill versucht bekam anfangs als IDs drolligerweise negative Zahlen. die seq_skill wurde aber scheinbar nicht von der Anwendung berührt, denn die Nummern erhöhten sich nur bei meinen manuellen Nextval-Aufrufen und waren noch dazu positiv!
Als ich dann auf einer glücklichen Seite nachlas, was ich offenbar machen muss, verwendete ich dann den Parameter allocationSize identisch mit der Definition für den SEQ-Cashe. Zwar waren es nun wieder ganz andere Zahlen für die IDs aber dafür positiv.
Dann machte ich die Probe auf Example ...
Hier habe ich vor als auch nach dem Versuch die noch jungfräuliche seq_mitarbeiter verwendet und stellte nach dem Insert weiterhin Jungfräulichkeit fest

[CODE lang="java" title="Hier wieder mein aktueller Skill-Bean" highlight="30"]package de.cmk.todo.restservices.skillmanager;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name= "\"skill\"", schema = "\"projekt-skill-verwalter\"")
public class Skill {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "skill_generator")
@SequenceGenerator(name="skill_generator", sequenceName = "projekt-skill-verwalter.seq_mitarbeiter", allocationSize=10)
@EqualsAndHashCode.Include
@Column(name="skill_id")
private Long id;
private String name;
@Column(name="beschreibung")
private String description;
}[/CODE]
Warum sind eigentlich DB-SEQs tatsächlich zu definieren, wenn sie anscheinend nicht ernsthaft verwendet werden?
Was übersehe ich hier?