2009-10-15 9 views
1

En raison de certaines limitations, le client m'a demandé de ne pas pouvoir utiliser la clé primaire "id" incrémentielle, seule la clé primaire composée est autorisée. Et je ne peux pas utiliser l'annotation JPA pour avoir un rappel d'entité. Ainsi, comment puis-je savoir qu'une entité va être insérée ou mise à jour? merci beaucoup.Comment savoir qu'une entité va insérer ou mettre à jour

+1

Est-il nécessaire de savoir qu'il va être inséré ou mis à jour? Une fusion doit effectuer l'une ou l'autre opération selon qu'elle est attachée ou non. –

+0

+1 avec @kaleb. Quel est votre cas d'utilisation? Pourquoi auriez-vous besoin de savoir si c'est un créer ou supprimer. Et pourquoi tu ne sais pas ce que tu fais? –

+0

En tant que conception de plate-forme, disons qu'il existe une interface DefaultManager, elle a une méthode saveOrUpdate() qui prend un POJO comme paramètre. Ainsi, DefaultManager est une super classe pour chaque modèle ou sous-classe logique. Toute sous-classe utilisera saveOrUpdate (Entité entité) pour faire l'insertion ou la mise à jour, même si j'ai une méthode saveOrUpdate (List ) pour la mise à jour groupée. Dans les deux méthodes saveOrUpdate, DefaultManager marque l'heure de création ou l'heure de mise à jour pour chaque entité. C'est pourquoi j'ai besoin de connaître le statut de chaque entité. – Matt

Répondre

1

Utilisez une colonne version

@Version 
public Integer getVersion() { 
    return this.version; 
} 

Que ce soit nul donc il est un insert autre est une mise à jour.

salutations,

+0

Merci beaucoup. Je n'ai pas utilisé Hibernate pendant des années. Depuis le 2.1.7, ça a beaucoup changé, j'ai presque oublié toutes les choses basiques. – Matt

+1

ou je vais utiliser Hibernate EntityManager au lieu de HibernateTemplate de Spring, donc je peux utiliser @PrePersist et @PreUpdate pour connaître l'état. – Matt

+0

N'hésitez pas à demander tout ce que vous voulez. J'ai beaucoup de réponses liées à ORM. Cordialement. –

Questions connexes