Comment injecter ids d'objets personnalisés dans des entités JPA
Question
J'utilise JPA 2 pour une application d'entreprise, et mon DBA vient de me frapper avec une touche.
Ils me veulent utiliser le générateur centralisé d'identification d'objet du groupe pour toutes mes tables . Ce moyen plutôt que d'utiliser des valeurs de table ou une table de séquence, Je vais avoir besoin d'appeler un service Web pour obtenir un lot de ~ 50 ids .
Ensuite, comme je persiste tout nouvel objet, je besoin d'injecter cet identifiant premier , et sauf que la table.
Alors, comment pourrais-je manipuler la colonne @Id d'une entité pour gérer cela.
Est-ce aussi simple que la mise sur une touche avant je persiste? Je pense que ce serait jeter une sorte d'entité non géré avec une erreur de jeu d'identification.
La solution
Mise à jour:
La meilleure méthode consiste à spécifier en fait une stratégie de séquence sur les champs générés et spécifiez une classe de séquence personnalisée.
La méthode JPA appellera alors nextId () de cette classe à chaque fois qu'il insère un nouvel objet.
Cette méthode permet des graphiques complets à persistèrent sans intervenir sur chaque entité manuellement.
figured it out. complexe Etonnamment,.) - il suffit de retirer l'annotation GeneratedValue du champ de clé
Il est destiné aux autochtones Ids ou par courrier électronique comme SSN, mais fonctionne quelle que soit la source.
@Entity
public class Client{
@Id
@Column(name="CLNT_ID")
private long key;
@Column(name="CLNT_NUM")
private String clientNumber;
...
}