Java – Hibernate: standards and collections
•
Java
I have a question about hibernate and criteria I have two classes:
public class Place{
long id;
String name;
Set<Street> streets;
}
public class Street{
long id;
String name;
Place place;
}
Now I want to write a method that returns a method with a list of names, as given in the parameter, and a street named "parameter"
public List<Place> findPlaces(String name,String streetname){
//getSession() gives me a hibernate session
Criteria crit = getSession().createCriteria(Place.class,"place");
crit.add(Restrictions.like("name",name+"%"));
//Everything works fine until here
//Last step: Sort out all places not containing a street named like streetname + "%"
}
I tried a different approach to the last step:
//streetList is a list of all streets named like streetname
crit.add(Restrictions.in("streets",streetList));
Other methods:
DetachedCriteria strasseCrit = DetachedCriteria.forClass(Street.class,"street");
streetCrit.add(Restrictions.like("street.name",streetname + "%"));
streetCrit.createAlias("street.place","streetPlace");
streetCrit.add(Restrictions.eqProperty("streetPlace.id","place.id"));
streetCrit.setProjection(Projections.property("street.name"));
crit.add(Subqueries.exists(streetCrit));
Final method:
crit.createAlias("place.streets","street");
crit.add(Restrictions.like("street.name",streetname + "%"));
crit.setResultTransformer(DistinctResultTransformer.INSTANCE);
I hope you can understand my problem. I'm sorry for my bad English:(
I searched the solution for two days and I don't know how to get there
Greetings from Germany:) Philip
Solution
public List<Place> findPlaces(String name,String streetname){
public List<Place> findPlaces(String name,String streetname){
Criteria crit = getSession().createCriteria(Place.class,"place");
criteria.createAlias("streets","s"); // Create alias for streets
crit.add(Restrictions.like("s.name",name+"%"));
// continue method
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
