Ich habe einen Tabelle Gruppe:
GruppenId|Variante|Bezeichnung |...
---------|--------|--------------|---
1 |0 |Text irgendwas|...
---------|--------|--------------|---
2 |0 |bla |...
---------|--------|--------------|---
... |... |... |...
Die Klasse dazu sieht etwa so aus:
@Table(name = "Gruppe")
public class Gruppe{
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "grid")
@SequenceGenerator(name="grid", sequenceName = "GruppenID_SEQ", allocationSize=1)
@Basic(optional = false)
@Column(name = "GruppenId")
private Long gruppenId;
@Basic(optional = false)
@Column(name = "Variante")
private long variante;
@Basic(optional = false)
@Colum(name = "Bezeichnung")
private String bezeichnung;
...
// Getter und Setter
}```
Die GruppenId war bisher der Primary-Key und besitzt eine Sequenz zur Id-Vergabe und Die Variante wurde immer auf 0 gesetzt. Jetzt wird aber die Variante noch Bestandteil des Schlüssels. Die Sequenz soll weiterhin nur für die GruppenId gelten. Möchte ich aber eine neue Variante einer bestehenden Gruppe speichern ich würde ich die Variante entsprechend hochzählen. Das ganze sähe in der Tabelle dann so aus:
GruppenId | Variante | Bezeichnung | … |
---|---|---|---|
1 | 0 | Text irgendwas | … |
--------- | -------- | -------------- | — |
2 | 0 | bla | … |
--------- | -------- | -------------- | — |
1 | 1 | neue Variante | … |
--------- | -------- | -------------- | — |
… | … | … | … |
Ist das mit zusammen gesetzten Schlüsseln mit Hibernate möglich?
Meine Idee wäre jetzt, einfach bei der Variante noch die Annotation @Id mit dran zusetzen.
```@Entity
@Table(name = "Gruppe")
public class Gruppe{
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "grid")
@SequenceGenerator(name="grid", sequenceName = "GruppenID_SEQ", allocationSize=1)
@Basic(optional = false)
@Column(name = "GruppenId")
private Long gruppenId;
@Id
@Basic(optional = false)
@Column(name = "Variante")
private long variante;
@Basic(optional = false)
@Colum(name = "Bezeichnung")
private String bezeichnung;
...
// Getter und Setter
}```