2010-04-13 3 views
0

J'ai une classe Project qui a un Set des userstories appelé userStories12many. Je vais avoir des problèmes en essayant d'obtenir le projet qui a un certain jeu dans son récit utilisateur getComponent(int userStoryID)HIbernate problème de langage de requête

Je pense im sur la bonne voie, mais je ne sais pas ce que je fait de mal

public Projects getComponent(int userStoryID) { 
    Session session = SessionFactoryHelper.getSessionFactory() 
    .getCurrentSession(); 
    session.beginTransaction(); 

    List<Projects> compo = session.createQuery("select p " 
    + "from Projects as p inner join fetch p.userStories12many as u " 
    + "where u.storyId='" + userStoryID + "'").list(); 
    session.getTransaction().commit(); 
    return compo.get(0); 

} 
+0

définissent « troubles ». Avez-vous une exception? Si oui, lequel? Obtenez-vous des résultats erronés? La plupart des rapports de bogues que je reçois des utilisateurs ordinaires sont plus clairs que votre question. – meriton

+0

Dans votre question vous dites que vous avez un cours "Projet", mais dans votre exemple vous avez des références à la classe "Projets" (pluriel de Projet). Est-ce une faute de frappe ou faites-vous référence à deux classes distinctes? –

+0

La création de requêtes hql à la main (concat) est extrêmement sujette aux erreurs. Je suggère d'utiliser @NamedQuery. Ceux-ci seront vérifiés pour l'exactitude, mis en cache et sont plus sûrs (pas d'injection SQL). – whiskeysierra

Répondre

0

Il y a quelques chose qui me semble mal dans votre code:

  1. Il est préférable de lier les paramètres plutôt que d'insérer leur valeur directement dans la chaîne de requête.
  2. Comment l'ID est cité? n'est-ce pas un int?
  3. Vous accédez aux résultats de la requête après la transaction est terminée, qui est souvent une mauvaise idée
+0

Ive fixé vos deux derniers points, mais il ne fonctionne toujours pas. Il retourne null. – mslatf