2015-07-24 1 views
2

J'utilise actuellement framework Spring et Hibernate, et ont une entité:EntityManager fusion en utilisant une colonne spécifique autre que id

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(name="ID") 
private Long id; 

@Column(name="ACC_ID") 
private Long accId; 

Maintenant, dans un cas particulier, je voudrais fusionner un objet dans la base de données utilisant la colonne "ACC_ID" au lieu de "ID", cependant, je ne veux pas attribuer @Id à accId parce que je ne veux pas changer l'entité elle-même.

Y at-il quelque chose que je peux faire sur la fonction de fusion? (Mais apparemment fusionner ne prend aucun autre paramètre qu'un objet)

entityManager.merge(entityObject) 

Merci d'avance pour toute idée ou aide. =)

+0

Ceci ne fonctionnera pas, comme hiberner aura un problème si vous n'utilisez pas votre clé primaire. –

+0

Okay! J'essaie la réponse ci-dessous alors. – Jerry

Répondre

1

entityManager.merge(entityObject) peut être utilisé s'il s'agit de votre clé primaire.

S'il s'agit d'une autre contrainte unique, vous devrez la gérer vous-même. Essayez d'abord de trouver une entité avec cette valeur (avec une requête), et si elle n'existe pas, enregistrez la nouvelle, sinon, transférez tous les champs (excepté la clé primaire)

+0

Je vois, merci pour l'information! – Jerry