Bonjour,
Dans ma base de donnée, j’ai 2 tables t_timesheet(id,userid,month,year,date) et t_activity(id,daydate,nbhour,timesheetid,assignementid,activitytypeid).
fichier de mapping:
TTimesheet.hbm.xml
TActivity.hbm.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <set name="TActivities" inverse="true"> <key column="ID"/> <one-to-many class="TActivity"/> </set>
Je souhaite récupérer un timesheet pour une période et un utilisateur donnée ainsi que la liste des activités associés a ce timesheet. Pour ce faire j’ai fais une méthode comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <many-to-one name="TimeSheetID" column="TimeSheetID" class="TTimesheet" not-null="false" > </many-to-one>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public TimeSheet getTimeSheetUser(User user, DateObject dateObject) throws HibernateException, NotExistingTimeSheetException { Session session = hibernateUtil.openSession(); String queryString = "from TTimesheet as t where t.UserID = ? and t.Month = ? and t.Year = ?"; Query query = session.createQuery(queryString); query.setInteger(0, user.getId()); query.setInteger(1, dateObject.getMonth()); query.setInteger(2, dateObject.getYear()); List ttimesheet = query.list(); if (ttimesheet == null || ttimesheet.size() == 0) throw new NotExistingTimeSheetException(user.getLogin()); TimeSheet result = ObjectsUtil.getTimeSheet(ttimesheet); return result; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static TimeSheet getTimeSheet(List ttimesheets) { TimeSheet result = new TimeSheet(); for (Object o : ttimesheets) { for(TActivity ac : ((TTimesheet)o).getTActivities()) System.out.println("heure " + ac.getNbHour() + " date " + ac.getDayDate() + " " + ac.getActivityTypeID().getDetails()); } return result; }
Test : month -> 2 , year -> 2008
Et voici le resultat:
heure 7.5 date 2008-02-02 00:00:00.0 Mission
alors que dans ma base il y a plusieurs activités associé a ce timesheet. Il devrait donc passé plusieurs fois dans le for (TActivity ac : ((TTimesheet)o).getTActivities()) , au lieu de ça il me récupère que la première activité…
quelqu'un aurait une idée please ?
merci
Partager