我有两个表
Student
和Student_Type
,每个学生都有每种类型,同时选择学生表如何在Spring data JPA中获取详细信息Student_Type。
学生实体
@Enity
@Table(schema="DATA", name="STUDENT")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name="fname")
private string fanme;
@Column(name="lname")
private string lanme;
@Transiant
private string config_type; // Studen_Type type should be populate on here
}
Student_Type 实体
@Enity
@Table(schema="DATA", name="STUDENT_TYPE")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StudentType {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name="type")
private string type;
@Column(name="stud_id") // Student `id` is referenced
private string stud_id;
@OneToOne(optional=false)
@JoinCoulumn(name="stud_id" referencedColumnName= "id" insertable=false, updateble=false)
private Student student;
}
在对
student
表进行选择查询时,如何从type
表中获取Student_type
。
Student
表的样本数据
|身份证 |名称 |名称|
| ---| ----- |----|
| 1 |拉朱 |米克尔|
| 2 |托马斯|乔治 |
| 3 |阿伦 |奈尔 |
Student_Type
表的样本数据
|身份证 |类型 |螺柱ID|
| ---| ----- |----|
| 1 |表演者| 1 |
| 2 |平均| 2 |
| 3 |表演者| 3 |
我是 Spring data JPA 的新手,
我尝试了一对一映射,但它不起作用, 这是我的本机查询,
学生存储库
@Query("select s.fname, s.lanme, st.type as config_type from student s left join student_type st on s.id=st.stud_id", nativeQuery=true)
List<Student> findStudetType();
请帮忙,我们将不胜感激
在您的
Student
中,添加:
@OneToOne(mappedBy="student")
private StudentType tudentType;
其次,将查询更改为 JPQL:
@Query("SELECT s FROM Student s LEFT JOIN FETCH StudentType st")