hibernate一对多 操作(增,删,改,查)

问题:
在Student中添属性SC(SC表示课程表);
Student student = new Student();
SC sc = new SC();
student.setSC(sc);
在hibernate配置文件中设置cascade=true,

getHibernateTemplate.save(student);
更新与插入类试;
getHibernateTemplate.update(student);

解决方案:

    1. 学生Student.hbm.xml:
    2. <hibernate-mapping>
    3.     <class name="com.ssh.Student" table="student" schema="dbo" catalog="sshcourse">
    4.         <id name="stuId" type="integer">
    5.             <column name="stu_id" />
    6.             <generator class="native" />
    7.         </id>
    8.         <property name="stuName" type="string">
    9.             <column name="stu_name" length="50" />
    10.         </property>
    11.         <property name="stuPwd" type="string">
    12.             <column name="stu_pwd" length="50" />
    13.         </property>
    14.         <set name="courses"
    15.         table="course_student_table"
    16.         cascade="save-update"
    17.         inverse="false" 
    18.         lazy="false">
    19.         <key column="stu_id"></key>
    20.         <many-to-many class="com.ssh.Course" column="cou_id"></many-to-many>
    21.         </set>
    22.     </class>
    23. </hibernate-mapping>
    24. 课程Course.hbm.xml:
    25. <hibernate-mapping>
    26.     <class name="com.ssh.Course" table="course" schema="dbo" catalog="sshcourse">
    27.         <id name="couId" type="integer">
    28.             <column name="cou_id" />
    29.             <generator class="native" />
    30.         </id>
    31.         <property name="couName" type="string">
    32.             <column name="cou_name" length="50" />
    33.         </property>
    34.         <property name="couDis" type="string">
    35.             <column name="cou_dis" length="50" />
    36.         </property>
    37.         <set name="students"
    38.         table="course_student_table"
    39.         cascade="save-update"
    40.         inverse="true">
    41.         <key column="cou_id"></key>
    42.         <many-to-many class="com.ssh.Student" column="stu_id"></many-to-many>
    43.         </set>
    44.     </class>
    45. </hibernate-mapping>
    他们之间是通过course_student_table学生课程表关联的
  1. cascade=true表设置级联,即插入学生信息同时也插入选课信息。
  2. <set name="courses"
  3.         table="course_student_table"
  4.         cascade="save-update"
  5.         inverse="false" 
  6.         lazy="false">
  7.         <key column="stu_id"></key>
  8.         <many-to-many class="com.ssh.Course" column="cou_id"></many-to-many>
  9. </set>
  10. <set name="students"
  11.         table="course_student_table"
  12.         cascade="save-update"
  13.         inverse="true">
  14.         <key column="cou_id"></key>
  15.         <many-to-many class="com.ssh.Student" column="stu_id"></many-to-many>
  16. </set>

实例:

  1. inverse="false" 表示为主控方,主控方负责维护关联关系,一般在一对多关系中,把多的一方设置为inverse="false"。lazy="false表示是延迟加载,当为true时,启动延迟加载,如两个关联a,b不延迟加载时可能加载a时候,也把b加载了,但你可能没用b,只用a了,这就造成了浪费,延迟加载时表示用到b时才加载。
  2. 删除例子
  3. public ActionForward execute(ActionMapping mapping, ActionForm form,
  4. HttpServletRequest request, HttpServletResponse response) {
  5. // TODO Auto-generated method stub 
  6. CourseID courseid=(CourseID)form;
  7. Student student=studao.findById((Integer)(request.getSession().getAttribute("stuid")));
  8. if(courseid.getCourses().length>0)
  9. {
  10. for(int i=0;i<courseid.getCourses().length;i++)
  11. {
  12. Integer cid=new Integer(courseid.getCourses()[i]);
  13. Course course=coudao.findById(cid);
  14. student.getCourses().remove(course);
  15. System.out.println("this is test1 sdfsdfg");
  16. System.out.println(cid);
  17. }
  18. }
  19. else
  20. {
  21. System.out.println("null");
  22. }
  23.                 studao.delete(student);
  24. return mapping.findForward("success");
  25. }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值