0
3 개의 테이블이 있습니다. (ID, 이름), 그룹 (ID, 이름, 대학 ID), 학생 (ID, 이름, 번호, 그룹 ID). 한 대학에는 많은 그룹이 있고 한 그룹에는 많은 학생이 있습니다.최대 절전 모드 ManyToOne과 OneToMany i 하나의 엔티티
내 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>();
}
내 도우미 클래스 :
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
를 얻을. 도와주세요.
유용한 정보를 찾으면 투표를 올리십시오. – anergy
@JoinColumn을해야한다는 것을 깨달았을 때이 게시물까지 오랫동안 여기에 머물러 있습니다. 내 개체 필드, 데이터베이스 필드 쿼리 작업을 만들기 위해 이름을 바꾸려고 ... 그래서 바보 야. – heroix