Spring data JPA 选择一张表 1 并获取表 2 的详细信息

问题描述 投票:0回答:1

我有两个表

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();

请帮忙,我们将不胜感激

sql spring spring-boot hibernate jpa
1个回答
0
投票

在您的

Student
中,添加:

@OneToOne(mappedBy="student")
private StudentType tudentType;

其次,将查询更改为 JPQL:

@Query("SELECT s FROM Student s LEFT JOIN FETCH StudentType st")

仅供参考:https://www.baeldung.com/jpa-joincolumn-vs-mappedby

© www.soinside.com 2019 - 2024. All rights reserved.