我在Spring Boot中使用Spring Data JPA(Hibernate)
我有两个数据库表。首先是课程表&第二是学院表。 两个表都有大约20列。
现在,我的课程表有一列名为parent_id,它是Institute Table的ID。
我设计了两个指定JOIN列的实体,并且还提取了数据并且我的对象已准备就绪。
但问题是我不想在课程对象中找到完整的学院对象,我只想要学院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 :(得分:0)
您可以声明CourseDTO对象。
public class CourseDTO {
private int listingId;
private String name;
Get and set method ...
}
学院实体有很多课程。你可以选择一个pojo。前,
@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);