set集合的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 02:18:20
有2个类,一个Person,一个email,关系是一对多,在person的配置文件中
<set name="emails" table="email">
<key column="id"/>
<element type="java.lang.String" column="address"></element>
</set>
然后写了个测试类
Person p = new Person() ;
p.setName("wyd1");
p.setEmails(new TreeSet());
p.getEmails().add("a1");
我的问题就是请问为什么必须有p.setEmails(new TreeSet());
你这话怎么感觉说了和没说差不多,要说关键点,我是不晓得,为什么要实例化下
如果是说因为emails本身是个set类型,那p.getEmails().add()是不是就是向这个集合里面添加元素呢

Person p = new Person() ;
p.setName("wyd1");
p.setEmails(new TreeSet());
p.getEmails().add("a1");

显示实例化了一个Person 但是他里面的属性没有初始值,Email这个集合一开始是 null值,这时候你要是调用 p.getEmails()这个方法,就会引发NullPointer异常,所以要先实例化一个Set集合,然后才能往里面添加数据。

如果是查询的话 这个Set集合Hibernate会自动处理,但你这里的测试必须要自己提供一个Set集合的实例才行

给email属性赋值啊!没有p.setEmails(),person的email属性是null。