Hibernate关联映射-one to to 主键单向关联
?
这次介绍 还是以Person 和 Address 为例..?
one to one 1对1 单向 主键关联.. 在一方关联另外一方,1对1,不能两方,同时拥有主键策略, 只能在一方设置为foreign 外键关联到另一方的主键.
?
?
下面是的具体代码:
Person_PK_One_to_One:
?
Address_PK_One_to_One.hbm.xml
?
写好配置文件后,接下来在Hibernate.cfg.xml中加入 刚刚新建的两个Mapping映射文档.
<mapping resource="pack/java/model/Person_PK_One_to_One.hbm.xml"/>
<mapping resource="pack/java/model/Address_PK_One_to_One.hbm.xml"/>
?
?
之后,就新建一个Test类,
用来测试1对1 主键关联的映射关系.
package pack.java.test;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import pack.java.hibernate.HibernateSessionFactory;import pack.java.model.Address_PK_One_to_One;import pack.java.model.Person_PK_One_to_One;public class HibernateDemoOneTo_One {public static void main(String[]args){HibernateDemoOneTo_One demoOneToOne = new HibernateDemoOneTo_One();Session session = demoOneToOne.getSession();//保存;demoOneToOne.savePersonAndAddress(session);//查询;demoOneToOne.queryPerson(session);}/** * 保存Person和Address; * @param session */private void savePersonAndAddress(Session session){Address_PK_One_to_One addressPKOneToOne = new Address_PK_One_to_One();addressPKOneToOne.setAddressDetail("湖南省株洲市");Person_PK_One_to_One personPKOneToOne = new Person_PK_One_to_One();personPKOneToOne.setName("ZhouHaiTao");personPKOneToOne.setAge(23);personPKOneToOne.setAddressPKOneToOne(addressPKOneToOne);//开启事务;session.beginTransaction().begin();//保存操作;session.save(personPKOneToOne);System.out.println("保存成功!");session.beginTransaction().commit();//关闭session;session.close();}/** * 查询Person对象和Address对象; * @param session */private void queryPerson(Session session){if(session!=null && !session.isOpen()){session = HibernateSessionFactory.getSession();}String hql="select p from Person_PK_One_to_One p where p.id = :pid";Query query = session.createQuery(hql);query.setParameter("pid",1);List<Person_PK_One_to_One> list = query.list();for (Person_PK_One_to_One personPKOneToOne : list) {System.out.println(personPKOneToOne.getId()+","+personPKOneToOne.getName()+","+personPKOneToOne.getAge()+","+personPKOneToOne.getAddressPKOneToOne().getAddressDetail());}session.close();}/** * 获取session; * @return */private Session getSession(){Session session = HibernateSessionFactory.getSession();return session;}}?
?
?
?