Hibernate HQL spørgsmål
HejJeg 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??