2017-04-10 47 views
0

我使用Spring數據JPA(休眠)與彈簧引導Spring引用實體(太大對象)

我有兩個數據庫表。第一個是課程表&第二個是Institute Table。 這兩個表都有大約20列。

現在我的課程表中有一列名爲parent_id,這是Institute Institute的ID。

我設計了我的兩個實體來指定JOIN Columns,並且數據也被提取並且我的對象已準備就緒。

但問題是我不想要完整的機構對象裏面的課程對象,我只是想學院id(listing_id)&名稱。我如何設計我的實體。

課程實體

@Entity 
@Table(name="courses") 
public class Course implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    private int id; 

    @Column(name="course_id") 
    private int courseId; 

    private String status 

    .. Other Properities... 

    @ManyToOne 
    @JoinColumns({ 
     @JoinColumn(name="parent_id", referencedColumnName="listing_id",insertable=false,updatable=false), 
     @JoinColumn(name="status", referencedColumnName="status",insertable=false, updatable=false), 
     }) 
    @Where(clause="status='live'") 
    private Institute institute; 

    .. Getters & setters 

} 

研究所實體

@Entity 
@Table(name="institutes") 
public class Institute implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    private int id; 

    @Column(name="listing_id") 
    private int listingId; 

    private String status; 

    @OneToMany(mappedBy="institute") 
    private List<Course> Courses; 

    .. Other Properties 

    .. Getters & Setters 

} 
+0

在哪個級別上只需要「光」研究對象?在實體級別還是實體被序列化爲JSON並在REST API中返回時? – dunni

+0

在實體級別上,實體實際創建時。此外,我很想知道如何將實體序列化爲JSON並在REST API中返回(僅用於我的學習目的)。 –

+0

如果您只想要實體中的某些字段,只需刪除您不需要的所有其他字段。關於JSON序列化:看一下'@ JsonView'註釋。 – dunni

回答

0

可以聲明一個CourseDTO對象。

public class CourseDTO { 
    private int listingId; 
    private String name; 

    Get and set method ... 
} 

該研究所實體有很多Courses.You可以選擇pojo。 ex,

@Query("select new com.pakcage.name.CourseDTO(c.id, c.courseId, i.listingId, i.name) from Course c join Institute i where c.id=:id") 
public CourseDTO fetchCourse(@Param("id") Long id);