java 代码
- public class User implements java.io.Serializable {
- // Fields
- private long id;
- private String name;
- private Set emails = new HashSet(0);
刚开始的时候只是写private Set emails,而没有将new HashSet(0)写出来.
在测试的时候,报空指针错误.
java 代码
- public void testCreate(){
- Email email1 = new Email();
- email1.setEmail("lsss@163.com");
- System.out.println(email1.getEmail());
- Email email2 = new Email();
- email2.setEmail("liddddyang@163.com");
- User user = new User();
- user.setName("lin");
- //下面这句话报空指针的错误
- System.out.println(user.getEmails());
- user.getEmails().add(email1);
- user.getEmails().add(email2);
- Session session = factory.openSession();
- Transaction tr = session.beginTransaction();
- session.save(user);
- tr.commit();
- session.close();
- }
java 代码
- public class Email implements java.io.Serializable {
- // Fields
- private long id;
- private String email;
配置映射文件的时候,多的一方没什么
xml 代码
- <hibernate-mapping>
- <class name="org.tie.Email" table="email" catalog="tie">
- <id name="id" type="long">
- <column name="id" />
- <generator class="native" />
- </id>
- <property name="email" type="string">
- <column name="email" length="45" not-null="true" />
- </property>
- </class>
- </hibernate-mapping>
xml 代码
- <hibernate-mapping>
- <class name="org.tie.User" table="user" catalog="tie">
- <id name="id" type="long">
- <column name="id" />
- <generator class="native" />
- </id>
- <property name="name" type="string">
- <column name="name" length="45" not-null="true" />
- </property>
- <set name="emails" table="email" cascade="all">
- <key column="uid"></key>
- <one-to-many class="org.tie.Email"/>
- </set>
- </class>
- </hibernate-mapping>
一的一放用到Set,但是这里和值类型的Set还是不一样的.
值类型里面的set用的是element而这里是用的one-to-many,
不同于值类型的Set映射.