2012-03-03 1 views
0

Dites que je veux faire une sélection parmi 2 bases de données. Database1 a les champs A, B et C. Database2 a les champs D, E et F. J'ai un POJO qui se compose des champs X, Y et Z. Je veux écrire une requête CriteriaBuilder pour sélectionner tous les champs B, D et F dans le jeu de résultats et les mapper aux champs X, Y et Z dans mon POJO, renvoyant une liste de mes objets POJO. Est-ce possible? Je peux le faire avec une requête native, mais je ne veux pas utiliser de requêtes natives.Existe-t-il un moyen avec JPA CriteriaBuilder d'extraire un objet non-entité?

+0

Avez-vous deux bases de données ou deux tables? JPA travaille avec des entités. Pas avec des tables. Montrez-nous ces entités et leur cartographie. –

+0

Désolé, je me suis mal exprimé. C'est 2 tables ... pas 2 bases de données. Entity1 est mappé à Table1 et contient les champs A, B et C. Entity2 est mappé à Table2 et contient les champs D, E et F. Je veux sélectionner parmi ceux-ci, mais je veux que mon résultat soit une liste d'un tiers non-entité POJO. Je veux que mon POJO contienne 3 champs - X, Y et Z. Je veux que ces 3 champs contiennent les résultats de requête de Entity1.B, Entity2.D et Entity2.F, respectivement. Et je veux être en mesure d'exécuter la requête et obtenir cette liste de résultats avec CriteriaBuilder. – user1148956

+0

duplication possible de [Puis-je utiliser le CriteriaBuilder JPA 2.0 pour extraire une liste d'objets non-entité?] (Http://stackoverflow.com/questions/9551214/can-i-use-the-jpa-2-0- criteriabuilder-to-fetch-a-list-of-non-entité-objets) – DataNucleus

Répondre

2

Vous pouvez essayer d'utiliser la requête ci-dessous pour retourner une entité initialisée par d'autres entités:

SELECT NEW com.package.Entity3(e1.b, e2.d, e2.f) FROM Entity e1, Entity e2; 

Ensuite, vous devez fournir un constructeur avec la signature similaire dans la requête, où vous pouvez définir les valeurs de champ selon les besoins .

public Entity3(int b, int d, int f){ 
    x = b; 
    y = d; 
    z = f; 
} 
Questions connexes