Je veux avoir des versions de la même entrée de données. En d'autres termes, je souhaite dupliquer l'entrée avec un autre numéro de version.
id - Version
sera la clé primaire.
À quoi devrait ressembler l'entité? Comment puis-je le dupliquer avec une autre version?
id Version ColumnA
1 0 Some data
1 1 Some Other data
2 0 Data 2. Entry
2 1 Data
@IdClass
annotation, un autre conseil que j'ai trouvé est que l'@Column
annotation doit aller dans les champs de la classe Entity (YourEntity
dans l'exemple de code de RohitJan).Réponses:
Vous pouvez créer un
Embedded class
, qui contient vos deux clés, puis avoir une référence à cette classe commeEmbeddedId
dans votre fichierEntity
.Vous auriez besoin des annotations
@EmbeddedId
et@Embeddable
.Une autre façon de réaliser cette tâche est d'utiliser l'
@IdClass
annotation et le lieu à la fois votreid
dans ceIdClass
. Vous pouvez maintenant utiliser l'@Id
annotation normale sur les deux attributsla source
@Generatedvalue
pour les identifiants par EmbeddedId@GeneratedValue
ne peut être utilisé que pour générer des valeurs de clé pour une clé primaire, il ne peut pas générer de combinaison pour des clés composites.La classe MyKey doit implémenter
Serializable
si vous utilisez@IdClass
la source
Classe clé:
Classe d'entité:
Comment puis-je le dupliquer avec une autre version?
Vous pouvez détacher l'entité récupérée du fournisseur, modifier la clé d'entrée, puis la conserver en tant que nouvelle entité.
la source
AUTOGENERATED
. ou quelque chose comme ça@GeneratedValue(strategy = GenerationType.IDENTITY)
hash
etprime
en méthodehashCode
en classeEntryKey
, pouvez-vous me dire d'où vient cette idée?La classe MyKey (@Embeddable) ne doit pas avoir de relations comme @ManyToOne
la source