Hi,
ich bekomme es einfach nicht hin, mit der Hibernate Criteria-API eine Oder -Abfrage über mehrere Objekte zu machen. Ich bekomme immer eine QueryException, obwohl ich schon sämtliche Varationen ausprobiert hab.
Die Doku zeigt mir auch leider nichts!
Hier mein letzter Versuch:
Hier ist die (unschöne) funktionierende Alternative ohne Criteria:
Was mache ich falsch?
Grüße
Peter
ich bekomme es einfach nicht hin, mit der Hibernate Criteria-API eine Oder -Abfrage über mehrere Objekte zu machen. Ich bekomme immer eine QueryException, obwohl ich schon sämtliche Varationen ausprobiert hab.
Die Doku zeigt mir auch leider nichts!
Hier mein letzter Versuch:
Java:
@Override
public List<Project> searchPojects(Affiliate affiliate, String search)
{
final DetachedCriteria criteria = DetachedCriteria.forClass(Project.class);
Criterion title = like("title", "%"+search+"%").ignoreCase(); //like für Project
criteria.createCriteria("tender").createCriteria("tenderComment"); // Verknüpfung von Project zu TenderComment über Tender
Criterion tenderNumber = like("tenderNumber", "%"+search+"%").ignoreCase();//like für TenderComment
//hier die Oder-Verknüpfung
criteria.add(or(title, tenderNumber)); //Oder-Verbindung
criteria.createCriteria("repository").add(eq("affiliate", affiliate));
return getHibernateTemplate().findByCriteria(criteria);
}
Hier ist die (unschöne) funktionierende Alternative ohne Criteria:
Java:
@Override
public List<Project> searchPojects(Affiliate affiliate, String search)
{
return getHibernateTemplate().find( "from Project p where p.title like ('%"+search+"%') or p.tender.tenderComment.tenderNumber like('%"+search+"%') and p.repository.affiliate = ?",new Object[]{affiliate});
}
Was mache ich falsch?
Grüße
Peter