Tôi gặp sự cố với chế độ ngủ đông và tiêu chí. Tôi có hai Lớp học:Hibernate: Tiêu chí có bộ sưu tập
public class Place{
long id;
String name;
Set<Street> streets;
}
public class Street{
long id;
String name;
Place place;
}
Tôi bây giờ muốn viết một danh sách các địa điểm có tên như được đưa ra trong tham số và đường phố có tên như được đưa ra trong tham số.
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 + "%"
}
tôi đã cố gắng nhiều cách khác nhau cho bước cuối cùng:
//streetList is a list of all streets named like streetname
crit.add(Restrictions.in("streets", streetList));
Một cách khác:
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));
Cách cuối cùng:
crit.createAlias("place.streets", "street");
crit.add(Restrictions.like("street.name", streetname + "%"));
crit.setResultTransformer(DistinctResultTransformer.INSTANCE);
Tôi hy vọng bạn có thể hiểu được vấn đề của tôi và xin lỗi vì tiếng anh xấu của tôi :(
Tôi tìm kiếm một giải pháp cho hai ngày và tôi không biết làm thế nào để đi về ...
Greetings mẫu Đức :) Philipp
gì sai sót làm bạn nhận được, đặc biệt khi sử dụng cách cuối cùng? – darrengorman
Không có lỗi, nhưng danh sách trả về có kích thước khoảng 300 và chỉ một nơi, ví dụ: địa điểm 'Munich' xảy ra 300 lần trong danh sách đó. Bây giờ tôi biết, nơi mà vấn đề là: Tôi cho phép tên đường phố trống, vì vậy đối với mỗi con phố trong 'Munich' có một mục trong danh sách. –