Hibernate异常中的一对多映射

Hibernate异常中的一对多映射,hibernate,jpa,Hibernate,Jpa,请帮助查找我的编码有什么问题 主类: SessionFactory factory = new Configuration().configure().buildSessionFactory(); Session session = factory.openSession(); session.beginTransaction(); Classes clazz = new Classes(); clazz.setName("MCA"); session.save(clazz);

请帮助查找我的编码有什么问题

主类:

SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();
session.beginTransaction();        

Classes clazz = new Classes();
clazz.setName("MCA");
session.save(clazz);    

Student s1 = new Student();
s1.setName("student1");
s1.setClazz(clazz);

Student s2 = new Student();
s2.setName("student2");
s2.setClazz(clazz);    

session.save(s1);
session.save(s2);

session.getTransaction().commit();
session.close();
public class Student {
private int id;
private String name;
private Classes clazz;

 //getter and setters
}

public class Classes {
private int id;
private String name;
private Set<Student> students;

  //getter and setters
}

<class name="leo.beans.Classes" table="Clazzes">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="string">
            <column name="NAME" length="100" />
        </property>
        <set name="students" table="student" inverse="true" lazy="true"
            fetch="select">
            <key>
                <column name="clazz" not-null="true" />
            </key>
            <one-to-many class="leo.beans.Student" />
        </set>
    </class>
    <class name="leo.beans.Student" table="STUDENT">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="string">
            <column name="NAME" length="10" />
        </property>
        <many-to-one name="clazz" class="leo.beans.Classes"
            cascade="save-update">
            <column name="clazz" not-null="true" />
        </many-to-one>
    </class>
豆子:

SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();
session.beginTransaction();        

Classes clazz = new Classes();
clazz.setName("MCA");
session.save(clazz);    

Student s1 = new Student();
s1.setName("student1");
s1.setClazz(clazz);

Student s2 = new Student();
s2.setName("student2");
s2.setClazz(clazz);    

session.save(s1);
session.save(s2);

session.getTransaction().commit();
session.close();
public class Student {
private int id;
private String name;
private Classes clazz;

 //getter and setters
}

public class Classes {
private int id;
private String name;
private Set<Student> students;

  //getter and setters
}

<class name="leo.beans.Classes" table="Clazzes">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="string">
            <column name="NAME" length="100" />
        </property>
        <set name="students" table="student" inverse="true" lazy="true"
            fetch="select">
            <key>
                <column name="clazz" not-null="true" />
            </key>
            <one-to-many class="leo.beans.Student" />
        </set>
    </class>
    <class name="leo.beans.Student" table="STUDENT">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="string">
            <column name="NAME" length="10" />
        </property>
        <many-to-one name="clazz" class="leo.beans.Classes"
            cascade="save-update">
            <column name="clazz" not-null="true" />
        </many-to-one>
    </class>

如果您可以发布该模式,那么查看该模式会很有帮助


我的第一个想法可能与学生->班级级联设置有关。既然你在学生面前明确地保存了这个类,那么试着把它去掉,因为它是不需要的。

如果你可以发布它,查看这个模式会很有帮助


我的第一个想法可能与学生->班级级联设置有关。因为你在学生面前显式地保存这个类,所以试着把它去掉,因为它是不需要的。

//session.save(clazz);如果我输入这行代码就行了。你能告诉我原因吗?架构没有问题,因为我在hibernate配置中使用了“create”。//session.save(clazz);如果我输入这行代码,它就可以工作。你能告诉我原因吗?架构没有问题,因为我在hibernate配置中使用了“create”。