ITPub博客

首页 > 应用开发 > Java > 初触hibernate03--持久态的纠结 2

初触hibernate03--持久态的纠结 2

原创 Java 作者:eBusinessMan 时间:2015-01-24 20:08:17 0 删除 编辑

两个类的配置和“持久态的困惑1”是一样的。

Account类(属性):                                            

public class Account {

            public String accountNum;//账号号码 ,主键

            public Set subAccountSet = new HashSet();//SubAccount的Set集合

            }

Account类的配置文件:

       

           

           

       

      

                          

                          

 

 

 

SubAccount类:

public class SubAccount {

            public int subAccountId;  

            public String subAccountNum;   

public Account account; //外键

}

SubAccount类的配置文件:

   

       

           

       

       

       

   

由以上配置文件:Account和SubAccount是双向一对多关联

 

一下是我的一些验证:

public class HibernateUtil {

            public static SessionFactory sessionFactory = buildSessionFactory();

            private static SessionFactory buildSessionFactory(){

                       。。。。通过配置文件创建并返回sessionFactory对象

            }

            public static SessionFactory getSessionFactory(){

                       return sessionFactory;

            }

            public static void main(String[] args) {

                       // TODO Auto-generated method stub

                       SessionFactory sessionFactory = HibernateUtil.getSessionFactory();

                       Session session = sessionFactory.openSession();

                       session.beginTransaction();

//创建一个Account对象account

                       Account account = new Account();

                       account.setAccountNum("141");

//将account转化为持久态

                       session.save(account);//注意A

                       session.getTransaction().commit();

                      

                       System.out.println("啦啦啦啦啦。。。");//注意B

//问题1.运行后会发现sql语句是在“注意B”打印的后的!!

            不是说save了就会立马发送sql语句到DB中执行吗?

                      

//创建一个SubAccount对象subAccount

                       SubAccount subAccount = new SubAccount();

                       subAccount.setSubAccountNum("0201");

                      

//下面,将transcient态的subAccount对象给add进account的Set集合中

                       account.getSubAccountSet().add(subAccount);//注意C

//问题2.虽然account已经save,就是说已经是持久态了,可是,"注意C"的语句汇报:not-null property references a null or transient value : cmbc.emen.po.SubAccount.account

/**

                       为什么处于持久态的account对象中的Set集合add入transcient态的subAccount对象时不会insert subAccount进入DB中的呢?

*/

                       session.getTransaction().commit();       

}

 

}

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29900383/viewspace-1413454/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-09-21

  • 博文量
    46
  • 访问量
    134909