J'ai 2 tables dans ma base de données: LOCALIDAD et CAJA. Ces tables ont une relation plusieurs à plusieurs, donc le serveur sql a créé une table pour représenter cette relation: LOCALIDAD_CAJA. J'utilise actuellement hibernate dans mon projet, mais hibernate n'a pas mappé cette table, LOCALIDAD_CAJA. J'ai besoin d'une requête pour lister CAJA en fonction de l'ID LOCALIDAD, donc ça va comme ceci:

select * from caja C, LOCALIDAD_CAJA LC, LOCALIDAD L
where C.CCAJA = LC.CCAJA
AND L.CLOCALIDAD = LC.CLOCALIDAD
AND L.CLOCALIDAD = 1

Mais en hql, je ne peux pas accéder à la table LOCALIDAD_CAJA et je dois le faire pour faire la correspondance correctement.

Merci d'avance

EDIT: je n'utilise pas d'annotations

-1
Renato Espinoza Carranza 28 déc. 2015 à 21:08

2 réponses

Meilleure réponse

Si vous n'utilisez pas d'annotations, vous pouvez ajouter un champ supplémentaire à votre table plusieurs à plusieurs, comme modifier la date ou quelque chose, donc puisque la table a maintenant son propre attribut, en plus des identifiants obtenus par la relation plusieurs à plusieurs, la mise en veille prolongée sera automatiquement les cartographier.

1
user5806464user5806464 15 avril 2016 à 18:55
  1. Utilisation de @ManyToMany avec l'annotation @JoinTable

    Vous pouvez utiliser l'association @ManyToMany de LOCALIDAD à CAJA avec @JoinTable. Vous pouvez spécifier name d'une table de jointure et les noms de clés étrangères avec joinColumns et inverseJoinColumns.

  2. Utilisation d'un persistant supplémentaire

    Vous pouvez ajouter une table persistante pour la table LOCALIDAD_CAJA (par exemple JoinLocaliCaja) et utilisez les associations @OneToMany de LOCALIDAD à JoinLocaliCaja et @OneToMany de CAJA à JoinLocaliCaja.

0
v.ladynev 28 déc. 2015 à 20:48