首页 > 应用开发 > Java > 初触hibernate03--持久态的纠结 2
两个类的配置和“持久态的困惑1”是一样的。
Account类(属性):
public class Account {
public String accountNum;//账号号码 ,主键
public 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/ ,如需转载,请注明出处,否则将追究法律责任。