Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Oracle 冬眠一个人一个人一个实体_Oracle_Hibernate_One To Many_Many To One - Fatal编程技术网

Oracle 冬眠一个人一个人一个实体

Oracle 冬眠一个人一个人一个实体,oracle,hibernate,one-to-many,many-to-one,Oracle,Hibernate,One To Many,Many To One,我有三张表:大学(id,姓名),团体(id,姓名,大学id),学生(id,姓名,号码,团体id)。 一所大学有许多小组,一个小组有许多学生 我的POJO看起来像这样: @Entity(name = "Student") public class Student { @SequenceGenerator(name = "genStudent",sequenceName = "STUDENTSEQ") @Id @GeneratedValue(generator = "genS

我有三张表:大学(id,姓名),团体(id,姓名,大学id),学生(id,姓名,号码,团体id)。 一所大学有许多小组,一个小组有许多学生

我的POJO看起来像这样:

@Entity(name = "Student")
public class Student {
    @SequenceGenerator(name = "genStudent",sequenceName = "STUDENTSEQ")
    @Id
    @GeneratedValue(generator = "genStudent")
    private int id;
    @Column(name = "name")
    private String name;
    @Column(name = "facNum")
    private String facNum;
    @ManyToOne
    private UniGroup group;

    public UniGroup getGroup() {
        return group;
    }

    public void setGroup(UniGroup group) {
        this.group = group;
    }

    public Student(){
    }
... getters and setters
}

@Entity
public class UniGroup {
    @SequenceGenerator(name = "genGroup",sequenceName = "UNIGROUPSEQ")
    @Id
    @GeneratedValue(generator = "genGroup")
    private int id;
    @Column(name = "administrativeName")
    private String administrativeName;
    @OneToMany(mappedBy = "group",cascade=CascadeType.ALL)
    private List<Student> students;
    @ManyToOne
    private University university;
... getters and setters
}

@Entity
public class University {
    @SequenceGenerator(name = "genUniversity",sequenceName = "UNIVERSITYSEQ")
    @Id
    @GeneratedValue(generator = "genUniversity")
    private int id;
    @Column(name = "name")
    private String name;
    @OneToMany(mappedBy = "university",cascade=CascadeType.ALL)
    private List<UniGroup> groups;

    public University(){
        groups = new ArrayList<UniGroup>();
    }

当试图保存或显示某个内容时。请提供帮助。

您应该做的第一件事是在应用@ManyToOne的位置添加@JoinColumn注释,否则将应用默认值@JoinColumn具有参数名,用于指定数据库中用于关系的列。
查看更多信息

您应该做的第一件事是在应用@ManyToOne的位置添加@JoinColumn注释,否则将应用默认值@JoinColumn具有参数名,用于指定数据库中用于关系的列。
查看更多信息

我在这里呆了很长时间,直到我意识到我所要做的就是@JoinColumn。我尝试重命名我的对象字段、数据库字段以使查询正常工作。。。我真蠢。我在这里呆了这么久,直到我意识到我所要做的就是@JoinColumn。我尝试重命名我的对象字段、数据库字段以使查询正常工作。。。我真蠢。
public class StudentSystemUtil {
    private SessionFactory sessFac;

    public StudentSystemUtil(){
        sessFac = new Configuration().configure().buildSessionFactory();
    }

    @SuppressWarnings("unchecked")
    public void showGroups(){
        Session session = sessFac.getCurrentSession();

        try{
        session.beginTransaction(); 

        Query q = session.createQuery("from UniGroup");

        List<UniGroup> groups = (List<UniGroup>)q.list();

        for(UniGroup g:groups){
            System.out.println("Group: "+g.getId()+" "+g.getAdministrativeName());
            for(Student s:g.getStudents()){
                System.out.println(s.getName()+" "+s.getGroup().getAdministrativeName());
            }
        }
        session.getTransaction().commit();
        }catch(Exception e){
            System.out.println("Error: "+e.getMessage());
        }
    }

    public void saveGroup(UniGroup group){
        Session session = sessFac.getCurrentSession();
        try{
        session.beginTransaction();

        session.save(group);

        session.getTransaction().commit();
        }catch(Exception e){
            if(session.getTransaction() != null){
                session.getTransaction().rollback();
            }
            System.out.println("Error: "+e.getMessage());
        }
    }

    @SuppressWarnings("unchecked")
    public void showUniversityes(){
        Session session = sessFac.getCurrentSession();

        try{
        session.beginTransaction(); 

        Query q = session.createQuery("from University");

        List<University> universityes = (List<University>)q.list();

        for(University u:universityes){
            System.out.println("University: "+u.getId()+" "+u.getName());
            for(UniGroup g:u.getGroups()){
                System.out.println(g.getAdministrativeName());
                for(Student s:g.getStudents()){
                    System.out.println("Student "+s.getName());
                }
            }
        }
        session.getTransaction().commit();
        }catch(Exception e){
            System.out.println("Error: "+e.getMessage());
        }
    }

    public void saveUniversity(University uni){
        Session session = sessFac.getCurrentSession();
        try{
        session.beginTransaction();

        session.save(uni);

        session.getTransaction().commit();
        }catch(Exception e){
            if(session.getTransaction() != null){
                session.getTransaction().rollback();
            }
            System.out.println("Error: "+e.getMessage());
        }
    }

    public void closeSessionFactory(){
        sessFac.close();
    }

}
Error: Could not execute JDBC batch update
Error: could not execute query