8
votes

Comment lier une entité à une unité de persistance spécifique

Dans une application Web à l'aide de STRUTS2 EJB Hibernate, est-il possible de dire à l'application de trouver ou de créer une entité pour un nom d'unité de persistance spécifique, écrit dans persistence.xml fichier le temps de déploiement?

J'ai deux unité de persistance dans persistance.xml et une source de données (y compris deux «local-tx-datasource») fichier XML sous le nœud JBoss.

Pour pouvoir disparaître, je veux dire, j'ai essayé ceci; xxx

et ne fonctionne pas. Puis essayé ceci et etc .. xxx

et aussi j'ai essayé ceci ci-dessus avec "l'unité =." Au lieu de "Nom =." Mais tout ce qui est fonctionné pour moi ...

[résolu]

<. exclude-classes non enregistrées> true < a résolu mon problème


1 commentaires

Pourriez-vous confirmer que vous avez combiné le True avec la liste Toutes les classes d'entité ( com.mycompany.foo etc.)? Modifiez de préférence cette information dans la partie [résolue] partie de votre question.


3 Réponses :


9
votes

mise à jour: strong> basé sur votre commentaire (ce n'est pas ce que j'ai compris de la question originale), je ne pense pas avoir une autre option que de désactiver la "découverte" et la répertoriement explicitement de vos entités dans Leur unité de persistance respective: xxx pré>

Je ne suis pas au courant d'une syntaxe au niveau de l'entité permettant de l'attribuer à une unité de persistance. P>


Je ne suis pas sûr d'avoir compris ce que vous essayez de faire, mais si vous souhaitez obtenir un gestionnaire d'entité pour une unité de persistance spécifique injectée, vous devez faire: Strike> P>

@Stateless
public class FooBean implements Foo {
    @PersistenceContext(unitName="MyPu1")
    EntityManager em1;

    // ...
}


3 commentaires

Au début, merci pour votre réponse. Comme nous le savons, quand j'ajoute une @enty Anno. Pour une classe, il recherchera et devrait créer la table dans la DB juste pendant le temps de déploiement. Dans ma candidature, toutes les entités sont recherchées dans une seule persévuration et c'est le mauvais. Je veux dire, je veux que mes entités soient recherchées ou créées dans une autre DB spécifiée dans l'autre persévuration. En conséquence, je souhaite dire que mon application que les entités sélectionnées doivent être recherchées ou créées pour uniquement l'objet de persévérance sélectionné (qui inclut les paramètres de DB à droite). Aucune idée? Merci


BTW, il vaut la peine de raconter à nouveau que j'ai deux unités de persistance de persistance.xml. Je veux dire, j'ai deux paramètres de connexion DB dans mon application et je souhaite utiliser l'une ou l'autre dépendent des entités que je veux. Je veux pouvoir dire: "Hey, vous devriez voir cette entité comme une table dans celle de cette dB (car elle est déjà là) que vous pouvez trouver les paramètres de la DB dans ce nom d'unité de persistance! Ainsi, utilisez cette persistance -unit pour cette entité "


True est résolu mon problème, merci beaucoup Pascal



-1
votes

@pascal thivent

Je n'ai pas essayé d'utiliser plusieurs entitysmanager à la fois, mais en regardant le problème mentionné ci-dessus, cela peut aider si cela fonctionne.

@PersisticCecontext (UNITNAME = "MYPU1") EntityManager EM1;

@PersistCeContext (UNITNAME = "MYPU2") EntityManager EM2;


3 commentaires

Eh bien, c'est exactement ma suggestion. Mais il semble que l'OP cherche quelque chose d'autre.


Merci Nayan. Cependant, le problème ne concerne pas l'injection d'entitémanager en effet. J'ai ajouté un commentaire à la première réponse ci-dessus. Si vous avez une idée du problème que j'ai mentionné, je serais ravi d'entendre ça.


@Downvoter OP a clarifié dans un commentaire qui était différent de la question initiale; Ce qui s'est mal passé pour bullener inutilement.



0
votes

Qu'est-ce que vous cherchez est probablement true .

vérifier la documentation sur jboss.org:

Dans ma configuration, j'ai eu deux bases de données (disons A et B) et je voulais deux unités de persistance distinctes, où l'une contient toutes les entités, mais tandis que l'autre unité de persistance contient l'entité restante. Ma persistance.xml ressemble à ceci: xxx


0 commentaires