Spring und Hibernate (Criteria & Query by Example) problem

catarina

Grünschnabel
ich bin nur eine anfängerin, ich versuch die ganze Zeit diese frage zu implementieren,
ich glaube bis jetzt habe ich alles richtig gemacht aber trotzdem bekomme ich keine ergebnis!!:confused:

hat jemand n Idee!!?
wäre sehr nett, wenn jemand mir helfen kann.
danke im voraus


hier ist der code:

@SuppressWarnings("unchecked")
public class ImmobilieDAO extends HibernateDaoSupport {
private static final String
BASE_IMMO_QUERY =
"from " + Immobilie.class.getName() + " i ";
private static final String SEARCH_IMMO_OR_QUERY =
BASE_IMMO_QUERY +
" where lower(title) like lower(?) " +
"or lower(city) like lower(?) " +
"or lower(zipcode) like lower(?) " +
"or garten = ? " +
"or balkon = ? " ;

public List<Immobilie> getByObjectSearch (Immobilie immobilie)
{
Immobilie immo = new Immobilie();
//immo.setTitle("supergeil");

Example exampleImmo =
Example.create(immo).ignoreCase().enableLike()
.enableLike(MatchMode.ANYWHERE).excludeZeroes()
.excludeProperty("title")
.excludeProperty("id")
.excludeProperty("bilder").excludeProperty("insertedBy")//.excludeProperty("typ")
.excludeProperty("description").excludeProperty("address").excludeProperty("province").excludeProperty("yearofbuild").excludeProperty("zustand")
.excludeProperty("caution")
.excludeProperty("balkon")
.excludeProperty("badmitfenster")

.excludeProperty("alarmanlage")

.excludeProperty("garten");


List list = getSession().createCriteria(Immobilie.class).add(exampleImmo).list();

return list;
}

public List<Immobilie> getBySearch(Immobilie immo) {

System.out.println("salam1 getbysearch in dao");

return getHibernateTemplate().find(SEARCH_IMMO_OR_QUERY,
new Object[]
{

immo.getTitle(),
immo.getCity(),
immo.getZipcode(),
immo.getGarten(),
immo.getBalkon()
}
);
}
}

***********************************************************


public class ImmobilieBO {

ImmobilieDAO immodao;
public List<Immobilie> getBySearch(Immobilie immobilie)
{

return immodao.getBySearch(immobilie);
}


public List<Immobilie> getByObjectSearch(Immobilie immobilie)
{

return immodao.getByObjectSearch(immobilie);
}
}


******************************************************************++++
public class SearchView {

ImmobilieBO immobo;

String searchCriteria = "and";
List<Immobilie> result = new LinkedList<Immobilie>();

public String doSearch()
{
result.clear();
if (searchCriteria.equalsIgnoreCase("and"))
{

result = immobo.getByObjectSearch(searchImmo); //searchImmo
} else {

result = immobo.getBySearch(searchImmo);
}

return "search_" + StdOutcome.GO;
}
}
 
Was heißt "kein Ergebnis"?

Ein paar designtechnische Anmwerkungen:

Einem Domänenobjekt (deinem BO) eine Referenz auf das DAO zu geben ist eher schlecht. Damit weiß das BO, dass du es persistierst. Ein DAO führt man deshalb ein, um Persistenzoperationen NICHT im Domänenobjekt zu haben. Dein View sollte dann einfach das DAO direkt benutzen anstelle des BO. Desweiteren hast du über dein jetziges Design eine Zyklische Abhängigkeit zwischen DAO und BO. Ebenfalls suboptimal.

Wenns darum geht schlanke DAO Schichten mit Spring und JPA/Hibernate/EclipseLink zu bauen könntest du dir mal Hades anschauen. Damit entfällt der Implementierungsaufwand für Großteile der CRUD Logik bzw für Queries.

Gruß
Ollie
 
Hallo,
danke Oliver für dein teschniche Anmerkungen!

was mit dem Ergebnis angeht!!
wenn ich Option oder auswähle, bekomme ich immer alle Angebote ohne ausnahme, obwohl ich das begrentzt habe.

mit Option Und bekomme ich gar keine Ergebnis!!
weißt du vielleciht woran es liegt.

soweit ich weiß!!obwohl ich diese Domänenobjekt (BO) benutzt habe, soll trotzdem funktionieren!!

Gruß
Catarina
 
Zurück