您的位置:首页 > 移动开发 > Android开发

android 设置控件的字体

2015-09-18 08:39 471 查看
一对多分为单向一对多和双向一对多。

从图中我们可以看到2个表之间的关系:customer 和 contact 是一对多的关系。1个customer 可能有多个contact。主控方为customer。

先来看配置文件:customer.hbm.xml

字段的映射就不说,忽略。看主要的

java 代码

"contacts" inverse="true">   

    "CUSTOMERID"/>   

    class="com.zhkchi.hibernate.Contact"/>   

  

name是指你在主控方customer class文件中建的一个set 字段的名字

key 是指被控方的外键,等会看hibernate生成的语句就清楚了 one-to-many指明了这个是一对多,class是指多的一方的类

这里,我们只是单向一对多关联,所以多方我们不需要配置什么特别的东西,只是最简单的字段映射就可以了。

下面来看代码:

java 代码

Criteria criteria = session.createCriteria(Customer.class);   

criteria.add(Expression.eq("customerid", new Integer(101)));   

List list = criteria.list();   

    if(list != null && list.size() > 0){   

        for(int i = 0;i< list.size();i++){   

            Customer customer = (Customer) list.get(i);   

            System.out.println(customer.getCustomerid() + customer.getName());   

            if(customer.getContacts() != null){   

                System.out.println(customer.getContacts().size());   

            }   

        }   

    }  

 

hibernate生成的语句如下:

java 代码

Hibernate: select this_.CUSTOMERID as CUSTOMERID0_0_, this_.NAME as NAME0_0_ from customer this_ whe   

re this_.CUSTOMERID=?   

101RICKY   

Hibernate: select contacts0_.CUSTOMERID as CUSTOMERID1_, contacts0_.CONTACTID as CONTACTID1_, contac   

ts0_.CONTACTID as CONTACTID1_0_, contacts0_.ADDRESS as ADDRESS1_0_, contacts0_.CITY as CITY1_0_, con   

tacts0_.CUSTOMERID as CUSTOMERID1_0_, contacts0_.PHONE as PHONE1_0_ from contact contacts0_ where co   

ntacts0_.CUSTOMERID=?   

2  

我们从sql语句的生成中可以发现2点有用的东西:

1. 我们在输出 id 和name的时候,hibernate并没有一起把contact里面的东西一起查询出来,而是等到我们查看contact的个数才执行查询的。这个和默认的 延迟加载是吻合的。

2. 刚刚前面提到的,在主动方,set集合中,key的配置,column为多方的外键,对应着最后的 where contacts0_.customerid = ?

不过有一点我还不太明白,这里我用的是java.util.set集合,如果换成list改如何?

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: