Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA@sequenceGenerate@OneToMany_Jpa_One To Many - Fatal编程技术网

JPA@sequenceGenerate@OneToMany

JPA@sequenceGenerate@OneToMany,jpa,one-to-many,Jpa,One To Many,我是JPA世界的新手,我有以下问题 我有一个类,它有一个生成的classId。这个类有一个学生列表,其中一个列(在学生中)是classId 我实现了这个,但是学生表的classId在数据库中显示为空(其余的都可以) 有人能帮忙吗 提前谢谢 这是代码 @Entity @Table(name = "class") public class Class implements Serializable { private Long classId; private List<S

我是JPA世界的新手,我有以下问题

我有一个类,它有一个生成的classId。这个类有一个学生列表,其中一个列(在学生中)是classId

我实现了这个,但是学生表的classId在数据库中显示为空(其余的都可以)

有人能帮忙吗

提前谢谢

这是代码

@Entity
@Table(name = "class")
public class Class implements Serializable {

    private Long classId;

    private List<Student> student;

    @Id
    @SequenceGenerator(name = "class_id_gen", sequenceName = "seq_class_id", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "class_id_gen")
    @Column(name = "class_id", unique = true, nullable = false)
    public Long getClassId() {
        return classId;
    }

    @OneToMany(mappedBy = "class", cascade = CascadeType.ALL)
    public List<Student> getStudent() {
        return this.Student;
    }

}

@Entity
@Table(name = "student")
public class Student implements Serializable {

    /**
     * The Class. 
     */
    private Class class;

    @ManyToOne()
    @JoinColumn(name = "class_id")
    public Class getClass() {
        return this.class;
    }

}

Main:

Class class = null;

    UserTransaction.begin();

    class = new Class();

    class.setStudents(ListOfStudents);

    EntityManager.persist(class);

    UserTransaction.commit();
@实体
@表(name=“class”)
公共类实现可序列化{
私人长classId;
私人名单学生;
@身份证
@SequenceGenerator(name=“class\u id\u gen”,sequenceName=“seq\u class\u id”,allocationSize=1)
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“class\u id\u gen”)
@列(name=“class\u id”,unique=true,nullable=false)
公共长getClassId(){
返回classId;
}
@OneToMany(mappedBy=“class”,cascade=CascadeType.ALL)
公共列表getStudent(){
归还这个。学生;
}
}
@实体
@表(name=“student”)
公共类学生实现可序列化{
/**
*这个班。
*/
私人班级;
@ManyToOne()
@JoinColumn(name=“class\u id”)
公共类getClass(){
返回此.class;
}
}
主要内容:
Class=null;
UserTransaction.begin();
class=新类();
班级设置学生(学生名单);
EntityManager.persist(类);
提交();

每隔两天就会问一次这个问题。此双向关联的所有者端是不存在mappedBy属性的端。这是Hibernate用来知道关系是否存在的那一面

您初始化了关联的一端(
clazz.setStudents(…)
),但这一端不是所有者端。因此,Hibernate不知道关联是否存在并且必须持久化

您必须初始化另一端:所有者端:

for (Student s : listOfStudents) {
    s.setClazz(clazz);
}

这个问题每两天问一次。此双向关联的所有者端是不存在mappedBy属性的端。这是Hibernate用来知道关系是否存在的那一面

您初始化了关联的一端(
clazz.setStudents(…)
),但这一端不是所有者端。因此,Hibernate不知道关联是否存在并且必须持久化

您必须初始化另一端:所有者端:

for (Student s : listOfStudents) {
    s.setClazz(clazz);
}