Die nächste GeneratedValue per getter bekommen und persitieren

Ich habe eine Tabelle (keine Sequence), mit der ich meine @GeneratedValue hinterlege:

[SQL]CREATE TABLE HIBERNATE_ID_GEN
(
NAME VARCHAR (255) NOT NULL,
VALUE NUMERIC(19) NOT NULL
);[/SQL]

Das sieht für das abstract PersistObj so aus;

@GeneratedValue(strategy = GenerationType.TABLE, generator = "keyGenerator")
@TableGenerator(name = "keyGenerator", table = "HIBERNATE_ID_GEN", pkColumnName = "NAME", valueColumnName = "VALUE", pkColumnValue = "NAME", allocationSize = 10)
private long id;

...

Ich möchte mir per Hibernate die nächste VALUE holen, also hier (VALUE += 10).

Ich weiß nicht, ob das geht, aber ich suche einen getter so etwas wie:

	this.entityManager.getTransaction().begin();
	hibernateIdGen.setValue(hibernateIdGen.getValue() + 10);
	Long nextValue = hibernateIdGen.getValue();
	...
	this.entityManager.persist(hibernateIdGen);
	this.entityManager.getTransaction().commit();
...

Aber hier brauche ich dann eine dummyId (@Id), oder geht das auch anders besser?

Wenn ich das richtig sehe, willst Du hier eine Tabelle als eine Art Speicher für sone Art “named sequences” benutzen. Diesen dann verwenden, um ANWENDUNGS-seitig die Ids für andere Entities zu vergeben und nicht DB-seitig? Kommt das in etwa hin? Falls ja, den tieferen Sinn sehe ich zwar nicht, aber kann man machen. Ich würde den IDGenerator als eigene Entity sehen. Den Getter und Setter für value auf Sichtbarkeit protected setzen, eine public Methode nextVal() schreiben, die zunächst den Getter aufruft, sich den Wert merkt, dann den Setter und dann den Wert zurück gibt. Ein Der Rest ist JPA-Magie.

Ok und danke. Für bestimmte Db-Abfragen nutze ich auch nativeSQL. I.d.R. sind das SELECTs. Mich interessiert auch die Abwicklung eines INSERTs per nativeSQL, bei denen ich ggf. die Id benötige.