hibernate一对多映射怎样存储? Null Pointer Exception出现在哪一行?你定位了吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请把映射的xml文件贴出来把。 第一个nullpointer是category.getProducts().add(product);你new了一个Category 对象,如果在初始化的时候未对products赋值或赋空值的话,那category.getProducts()取出的是空。后面的不要我说了吧?后面的那个看不出来什么错。楼主,不好意思了。 还有,对于一对多的关系,在子表数据未保存的时候而去保存主表(set里有未保存的子表对象),应该会出错的(未保存的持久对象异常)。楼主第二种方法值得商榷 谢谢大家,我无意间看到一个blog,讨论了上述问题,它给出两种方法,一种就是我的第二种,他也说了不知为什末不行,我的第一种方法其实是在www.hibernate.org.cn学的,(初级文章,one-to-many),而且我的第二种方法是hibernate文档所给出的方法,如下:Cat cat = new DomesticCat();Cat kitten = new DomesticCat();....Set kittens = new HashSet();kittens.add(kitten);cat.setKittens(kittens);session.save(cat);kittens = cat.getKittens(); //Okay, kittens collection is a Set怎末可能会出错呢它给出的第二种方法是:Session s=HibernateUtil.currentSession();Traction t=new Traction();Category category=new Category();category.setName("a");s.save(category);Product product=new Product();product.setName(b);product.setCategory(c);s.save(product);t.commit();s.close();象这样做是可以的,但我觉得hibernate文档所提供的方法最能体现hibernate的优势,也是最符合逻辑的,我自己没看材料直接想就是这样想的还有,我的映射文件与类是用middlegen与hibernate-extention自动生成的,我不知道为什末在生成的xml文件里,有insert=false出现,所以用这种方法要更改这一项(也许是我的具体数据库的关系) Session s=HibernateUtil.currentSession();Traction t=new Traction();//老兄看过HIBERNATE文档吗?这里的traction怎么能NEW 一个,正确的因该为。Traction t = s.beginTransaction();Category category=new Category();category.setName("a");Product product=new Product();product.setName(b);category.getProducts().add(product);s.save(category);t.commit();s.close();给你一个正确的吧! Session s=HibernateUtil.currentSession(); Transaction tx = null; try{ tx = s.beginTransaction(); s.save(userInfo); s.flush(); tx.commit(); }catch(HibernateException e){ if (tx != null){ tx.rollback(); } throw e; }finally{ s.close(); } return userInfo; } struts jquery json 提交表单 急!!!spring+hibernate的问题 JSP聊天问题? 打算开始学习J2EE,看了一些帖子说先学习JSP 问大家个小问题 这是什么错误啊 web问题 entity bean 用Collection selectByLastname(String name)取回的记录中关键字段是重复的 Form中的Item[]的光标焦点问题. deploy的问题,请各位指点 炒作Java,变味Java,质疑曲歪发展,居然送200+200分没人理 各位高手,请教一下怎么考虑web service的并发性阿?
Cat cat = new DomesticCat();
Cat kitten = new DomesticCat();
....
Set kittens = new HashSet();
kittens.add(kitten);
cat.setKittens(kittens);
session.save(cat);
kittens = cat.getKittens(); //Okay, kittens collection is a Set怎末可能会出错呢
它给出的第二种方法是:
Session s=HibernateUtil.currentSession();
Traction t=new Traction();Category category=new Category();
category.setName("a");s.save(category);Product product=new Product();
product.setName(b);
product.setCategory(c);s.save(product);t.commit();
s.close();象这样做是可以的,但我觉得hibernate文档所提供的方法最能体现hibernate的优势,也是最符合逻辑的,我自己没看材料直接想就是这样想的还有,我的映射文件与类是用middlegen与hibernate-extention自动生成的,我不知道为什末在生成的xml文件里,有insert=false出现,所以用这种方法要更改这一项(也许是我的具体数据库的关系)
Traction t=new Traction();//老兄看过HIBERNATE文档吗?这里的traction怎么能NEW 一个,正确的因该为。Traction t = s.beginTransaction();
Category category=new Category();
category.setName("a");Product product=new Product();
product.setName(b);category.getProducts().add(product);
s.save(category);t.commit();
s.close();给你一个正确的吧! Session s=HibernateUtil.currentSession();
Transaction tx = null;
try{
tx = s.beginTransaction();
s.save(userInfo);
s.flush();
tx.commit();
}catch(HibernateException e){
if (tx != null){
tx.rollback();
}
throw e;
}finally{
s.close();
}
return userInfo;
}