这是最终的SQL语句:select * from user_person up,security_user su where up.user_id = su.username and su.mobile='13439019232'如题,不采用HQL语句的话,程序该怎么写呢,用DetachedCriteria或criteria写怎么做呢。在线等.....

解决方案 »

  1.   

    你应该到JAVA版去问:
    下面是帮你找来的,看看16.4. 关联
    你可以使用createCriteria()非常容易的在互相关联的实体间建立 约束。 List cats = sess.createCriteria(Cat.class)
        .add( Restrictions.like("name", "F%")
        .createCriteria("kittens")
            .add( Restrictions.like("name", "F%")
        .list();
    注意第二个 createCriteria()返回一个新的 Criteria实例,该实例引用kittens 集合中的元素。 接下来,替换形态在某些情况下也是很有用的。 List cats = sess.createCriteria(Cat.class)
        .createAlias("kittens", "kt")
        .createAlias("mate", "mt")
        .add( Restrictions.eqProperty("kt.name", "mt.name") )
        .list();
    (createAlias()并不创建一个新的 Criteria实例。) Cat实例所保存的之前两次查询所返回的kittens集合是 没有被条件预过滤的。如果你希望只获得符合条件的kittens, 你必须使用returnMaps()。 List cats = sess.createCriteria(Cat.class)
        .createCriteria("kittens", "kt")
            .add( Restrictions.eq("name", "F%") )
        .returnMaps()
        .list();
    Iterator iter = cats.iterator();
    while ( iter.hasNext() ) {
        Map map = (Map) iter.next();
        Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);
        Cat kitten = (Cat) map.get("kt");
    }