標籤:pac images port e30 技術 system setname pre student
需求:學生有很多照片,分為生活照和工作照;
第一節:每個具體類對應一個表
Student.java:
package com.cy.model;import java.util.Set;public class Student { private int id; private String name; private Set<Image> images; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Image> getImages() { return images; } public void setImages(Set<Image> images) { this.images = images; } }
View Code
抽象類別Image.java:
package com.cy.model;public abstract class Image { private int id; private String imageName; private Student student; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getImageName() { return imageName; } public void setImageName(String imageName) { this.imageName = imageName; } public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } }
View Code
生活照LifeImage.java:
package com.cy.model;public class LifeImage extends Image{}
View Code
工作照WorkImage.java:
package com.cy.model;public class WorkImage extends Image{}
View Code
Student.hbm.xml:
<hibernate-mapping package="com.cy.model"> <class name="Student" table="t_student"> <id name="id" column="stuId"> <generator class="native"></generator> </id> <property name="name" column="stuName"></property> </class></hibernate-mapping>
LifeImage.hbm.xml:
<hibernate-mapping package="com.cy.model"> <class name="LifeImage" table="t_lifeImage"> <id name="id" column="lifeImageId"> <generator class="native"></generator> </id> <property name="imageName" column="imageName"></property> <many-to-one name="student" column="stuId" class="com.cy.model.Student"></many-to-one> </class></hibernate-mapping>
View Code
WorkImage.hbm.xml:
<hibernate-mapping package="com.cy.model"> <class name="WorkImage" table="t_workImage"> <id name="id" column="workImageId"> <generator class="native"></generator> </id> <property name="imageName" column="imageName"></property> <many-to-one name="student" column="stuId" class="com.cy.model.Student"></many-to-one> </class></hibernate-mapping>
View Code
測試代碼StudentTest.java:
@Test public void testGetAllImages(){ List<Image> imageList = new ArrayList<Image>(); int stuId = 1; List<Image> lifeImageList = (List<Image>)session.createQuery("from LifeImage l where l.student.id = " + stuId).list(); imageList.addAll(lifeImageList); List<Image> workImageList = (List<Image>)session.createQuery("from WorkImage w where w.student.id = " + stuId).list(); imageList.addAll(workImageList); for(Image image: imageList){ System.out.println(image.getImageName()); } }
View Code
三個表的關聯關係:
t_lifeimage表結構:
t_lifeimage表資料:
t_workimage表資料:
第二節:根類對應一個表
Hibernate學習7—Hibernate 映射繼承