Eu quero ter versões da mesma entrada de dados. Em outras palavras, desejo duplicar a entrada com outro número de versão.
id - Version
será a chave primária.
Como deve ser a aparência da entidade? Como posso duplicá-lo com outra versão?
id Version ColumnA
1 0 Some data
1 1 Some Other data
2 0 Data 2. Entry
2 1 Data
java
jakarta-ee
jpa
composite-primary-key
Kayser
fonte
fonte
@IdClass
anotação, outra dica que descobri é que a@Column
anotação deve ir para os campos da classe Entity (YourEntity
no código de amostra de RohitJan).Respostas:
Você pode fazer um
Embedded class
, que contém suas duas chaves e, em seguida, ter uma referência a essa classe comoEmbeddedId
em seuEntity
.Você precisaria das anotações
@EmbeddedId
e@Embeddable
.Outra maneira de realizar esta tarefa é usar
@IdClass
anotação e lugar tanto o seuid
naqueleIdClass
. Agora você pode usar@Id
anotações normais em ambos os atributosfonte
@Generatedvalue
para Ids por EmbeddedId@GeneratedValue
só pode ser usado para gerar valores de chave para uma chave primária, não pode gerar combinação para chaves compostas.A classe MyKey deve implementar
Serializable
se você estiver usando@IdClass
fonte
Classe chave:
Classe de entidade:
Como posso duplicá-lo com outra versão?
Você pode desanexar a entidade que recuperou do provedor, alterar a chave de Entrada e então persisti-la como uma nova entidade.
fonte
AUTOGENERATED
. ou algo parecido@GeneratedValue(strategy = GenerationType.IDENTITY)
hash
eprime
no métodohashCode
em sala de aulaEntryKey
, você pode me dizer onde vem essa idéia?A classe MyKey (@Embeddable) não deve ter relacionamentos como @ManyToOne
fonte