javabean:
//学生类,对应多个课程
public class Student { private int id;
private String name;
private String password;
private String major;
private String school;
private Set Courses; //一对多
.......
}
//分数类,对应一个课程
public class Point { private int id;
private Course course;   //一对一
private double point;
        ........... 
}
//课程类,对应一个分数和一个学生
public class Course { private int id;
private String name;
private Point point;    //一对一
private Student student;//多对一
        ...........
}
*************************************************************
映射文件:
point:
<hibernate-mapping package="domain">
<class name="Point"  table="t_point">
<id name="id">
<generator class="native"/>
</id>
<property name="point" not-null="true"/>
<one-to-one name="course"
    property-ref="point"
></one-to-one>
</class>
</hibernate-mapping>
student:
<hibernate-mapping package="domain">
<class name="Student"  table="t_student">
<id name="id">
<generator class="native"/>
</id>
<property name="name" not-null="true"/>
<property name="password" not-null="true"/>
<property name="major"/>
<property name="school"/>
<set name="courses" inverse="true" cascade="all">
<key column="student_id"/>
<one-to-many class="Course"/>
</set>

</class>
</hibernate-mapping>
course:
<hibernate-mapping package="domain">
<class name="Course"  table="t_course">
<id name="id">
<generator class="native"/>
</id>
<property name="name" not-null="true"/>
<many-to-one name="student"
 column="student_id"
 cascade="all"
></many-to-one>
<many-to-one name="point"
     unique="true"
></many-to-one>
</class>
</hibernate-mapping>
测试的时候出现问题:
22:11:40,640 ERROR SchemaUpdate:155 - Unsuccessful: alter table t_course add index FK62BB32469E687C90 (student_id), add constraint FK62BB32469E687C90 foreign key (student_id) references t_student (id)
22:11:40,656 ERROR SchemaUpdate:156 - Can't create table 'student.#sql-b20_15' (errno: 150)
只能保存单个信息
他们之间的外键参考信息始终是null
请高手检查错误

解决方案 »

  1.   

    你是否想在改变一个对象,与之相关对象随之改变?
    如果是,你就得使用级联属性cascade。
      

  2.   

    在数据库中,把那个表的外键设置为可以NULL,试试行不?
      

  3.   

    你一对多 或多对一
    的属性要    属性=new CLass()
    否则引用一直为空那么外键当然为空
    如果没有会报null错
      

  4.   

    Student:
    <one-to-many class="Course" column="关联字段"/> 
      

  5.   

    Course 和 Student应该是一对多关系吧!!!试试把course改成one-to-one:
      

  6.   

    <key-many-to-one name="外键表" class="com.dto.DAO类">
                    <column name="外键" length="10" />
                </key-many-to-one>