Avatar billede bentblod Nybegynder
02. april 2009 - 11:58

Hibernate HQL spørgsmål

Hej

Jeg sidder og roder med noget hibernate som jeg har lidt problemer med. Mit problem er at sætte en AND ind i mit left join, hvilket åbenbart er meget besværligt i hql :(

Koden:

List<Ticket> tickets = new ArrayList<Ticket>();
try {
tickets = (List<Ticket>)getHibernateTemplate().execute(new HibernateCallback() {

public Object doInHibernate(Session session) {

String sql = "from Ticket as t " +
"inner join fetch t.application as app " +
"left join fetch t.smscInfo as si " +
"left join fetch si.country as c " +
"left join fetch t.account as acc " +
"left join fetch t.ticketPropertyList as tpl " +
"and tpl.name = (:propertyValue) " +
"where app.id = (:applicationId) " +
"and t.buyTime between (:fromDate) and (:toDate) ";
sql += "order by t.buyTime desc";

Query query = session.createQuery(sql);
query.setInteger("applicationId", StaticVariables.APPLICATION_ID);
query.setDate("fromDate", fromDate);
query.setDate("toDate", toDate);
query.setString("propertyValue", "test_ID");

                   
return query.list();
}
});
           
}
catch (DataAccessException dae) {
  logger.error("getTicket: exception was", dae);
}
catch (Exception e) {
  logger.error("getTicket: exception was", e);
}


Problemet ligger i min '"and tpl.name = (:propertyValue) " ', som jeg gerne ville have til at se ud som følgende i SQL'en:
left outer join
        ticket_property tpl on t.id = tpl.ticket_id
      AND tpl_.name = 'test_ID'

Men i stedet for fejler den. Nogen der har en anelse om hvordan man får en AND ind i et left join??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester