java - Hibernate:集合条件

标签 java hibernate criteria restrictions

我对 hibernate 和标准有疑问。我有两个类(class):

public class Place{
    long id;
    String name;
    Set<Street> streets;
}

public class Street{
    long id;
    String name;
    Place place;
}

我现在想编写一个方法,该方法返回一个名称与参数中给定的名称和街道名称与参数中给定的名称相似的地点列表。

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 + "%"
}

最后一步我尝试了不同的方法:

//streetList is a list of all streets named like streetname
crit.add(Restrictions.in("streets", streetList));

另一种方式:

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));

最后的方式:

crit.createAlias("place.streets", "street");
crit.add(Restrictions.like("street.name", streetname + "%"));
crit.setResultTransformer(DistinctResultTransformer.INSTANCE);

我希望你能理解我的问题并为我糟糕的英语感到抱歉:(

我找了两天的解决方案,我不知道如何继续...

来自德国的问候:) 菲利普

最佳答案

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
}

关于java - Hibernate:集合条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982823/

相关文章:

java - 使用传出 HTTP 请求测试 void 方法

java - 在用户名或用户电子邮件等属性下使用 @Id 注释是一个好习惯吗

java - 闭包意味着完全类型安全的标准?

java - 如何向 Hibernate criteria api 查询添加优化器提示

hibernate - 在 JPA 条件查询的 'case...when...then...else...end' 子句中使用 'having' 构造

java - 在java中分配一个字符串“值

java - 在另一个函数中声明的 Canvas 上绘图

java - 如何检查 session 是否存在?

hibernate - 并排部署 EJB 和 WAR 的 JBoss AS 6 中的类加载器问题

当一个不存在的实体被传递给 merge() 时,Hibernate 意外地发出 INSERT 而不是抛出 javax.persistence.OptimisticLockException