oracle - Hibernate ManyToOne and OneToMany i one Entity -
i have 3 tables university(id,name), group(id,name,university_id), student(id,name,number,group_id). 1 university have many groups , 1 group have many students.
my pojos this:
@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 , 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 , 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>(); }
my helper class:
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(); } }
and
error: not execute jdbc batch update error: not execute query
when try save or show something. please.
first thing should add @joincolumn annotation @manytoone applied, because otherwise default applied. @joincolumn has parameter name specify column in database used relationship. have @ documentation more info
Comments
Post a Comment