Le 06/07/2012 12:17, mallon@users.chorem.org a écrit :
+ public List<Entry> getAllEntrieByDatesAndAccountAndLettering(Date beginDate, Date endDate, Account account, String filtreLettre) throws LimaException { + List<FinancialTransaction> financialTransactions = null; + List<Entry> entries = new ArrayList<Entry>(); + + try{ + FinancialTransactionDAO transactionDAO = getDaoHelper().getFinancialTransactionDAO(); + financialTransactions = transactionDAO.findAllByDates(beginDate, endDate); + }catch (Exception ex){ + throw new LimaException("Can't get financial transactions", ex); + } + + try { + EntryDAO entryDAO = getDaoHelper().getEntryDAO(); + for (FinancialTransaction financialTransaction : financialTransactions){ + entries.addAll(entryDAO.findAllEntryByAccountAndLettering(financialTransaction, account, filtreLettre)); + } + } catch (Exception ex) { + throw new LimaException("Can't get entries", ex); + } + + if (log.isInfoEnabled()) { + log.info("Entries size : " + entries.size()); + } + + return entries; + } + + /** C'est mieux, mais c'est toujours pas bon. Tu as plusieurs appels base, alors qu'un seul suffit, dont un dans une boucle "for".
Tu devrait avoir seulement quelque chose du genre: entryDAO.findAllEntryByAccountAndLettering(beginDate, endDate, account, filtreLettre); + public List<Entry> findAllEntryByAccountAndLettering(FinancialTransaction financialTransaction, Account account, String filtreLettre) throws TopiaException { + List<Entry> entries = null; + + String query = "from " + Entry.class.getName() + " E " + + " where E.financialTransaction = :financialTransaction" + + " and E.account = :account "; + if (filtreLettre.equals("null")){ + query += " and E.lettering is null"; + }else if (filtreLettre.equals("notNull")){ + query += " and E.lettering is not null"; + } + + entries = context.findAll(query, "financialTransaction", financialTransaction, "account", account); + return entries; + } Et le "filtreLettre" en string et les equals("null") c'est toujours pas bon. -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com