临时问题记录-Hibernate保存主从表数据的入口
最近用hibernate做项目,发现hibernate的问题细节很多,顺手记录下来。
今天跑了一个测试用例,发现保存的时候生成的sql语句,情况不是预期的,我就奇怪了,
后来对照了半天代码才发现,原来是我在做保存的时候,选择的主从表入口点不同,造成了不同的效果。
用hibernate保存从表数据的时候,我们可能选择的入口点也不同。
1 以主表为入口点来保存,
2 以从表为入口点来保存。
3 hql/sql语句或者结构化对象查询 来保存。
现在针对1,2点的情况来说明 如果以主表为入口点保存,
例如CLASS-STUDENT 的一对N关系
此时我们要保存STUDENT对象。
如果以CLASS类为入口点的话,
必须这么做:
Class(班级) class = service.getStudent("id"); Student s = new Student(); s.setClass(class); classService.save(class);Class class =new Class(); class.setId("id"); s.setClass(class); classService.save(class);Class class = new Class(); class.setId("id");//此时class是一个瞬时状态的实例,也可以成为临时态 stu.setClass(class); StuService.saveStu(stu);