2012-10-24 6 views
2

Nous avons ce projet d'école où nous créons un système de bibliothèque de livres où l'objectif principal est d'utiliser une connexion à la base de données. Dans ce cas, JPA et ObjectDB.SQL-query dans JPA

Notre problème est que nous avons 3 tables. Celui qui décrit un livre (titre, auteur et année publiée), le second un emprunteur (prénom, nom, adresse, email et numéro de téléphone) et le dernier tableau la fonction prêteuse qui obtient la clé ID primaire des deux autres les tables.

Le problème est que lorsque nous utilisons la fonction livre empruntée par la liste, elle n'imprime que les ID des deux autres tables. Nous pensons que le problème est la requête SQL et nous n'avons pas eu la chance d'apprendre le SQL correctement. Donc, notre question est, comment pouvons-nous créer une requête SQL qui obtient le titre de la table-livre et le prénom et le nom de la table de l'emprunteur et non les ID.

La requête SQL où nous avons seulement réussi à travailler est la suivante:

TypedQuery<BokLån> q = em.createQuery("SELECT bookborrow FROM BookBorrow BookBorrow", BookBorrow.class); 
+0

Vous devez publier la définition @entity de BookBorrow et de toute autre entité impliquée. – dispake

Répondre

0

IT est le problème de chercher et chercher mécanisme de type. actuellement vos entités sont chargées paresseuses, vous pouvez les charger avec impatience dans la classe d'entité

0

Vous devez écrire une instruction JOIN appropriée pour combiner la table de prêt aux autres tables, et récupérer les informations à partir de là.

Quelque chose le long des lignes de:

SELECT 
    book.title, 
    person.firstname, 
    person.lastname 
FROM 
    borrower 
    JOIN book ON book.bookid = borrower.bookID 
    JOIN person ON person.personid = borrower.personid 

La façon dont cela fonctionne est la condition ON spécifie comment lier les tables ensemble. Dans votre cas, la table de l'emprunteur a un ID de personne qui se rapporte à la colonne PersonID dans la table de personnes. En établissant le lien avec JOIN, vous pouvez ensuite accéder aux autres colonnes de la table Person.

La même méthode fonctionne exactement pour la table livre.