连接表并返回数据以与Spring JPA进行反应



我正在尝试在Spring JPA中加入两个实体,以便我可以访问react中的数据。

我有一个EventCourse实体与相应的表在postgres。

在react中,我循环遍历数据库中的所有事件,并在每个事件的卡片上显示它们。事件表包含该事件正在播放的courseid。但是我想在卡片上显示coursename而不是courseid

我目前没有访问这个,所以需要连接表,这样我才能访问它。

我从未在Spring JPA中使用过查询,并且正在努力创建一个查询来实现此连接。

我想要这样的SQL查询,

select * from event join course on course.courseid=event.course_id where eventid=5

,其中eventid将从react传递到Spring,以便在每个循环期间,它将获得正确的eventid并显示该事件的相应coursename

实现:

import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class Course {
@Id
@Column(name = "courseid")
private Long id;
@Column(name = "coursename")
private String courseName;
@OneToMany(mappedBy = "course")
private List<Event> events;
// ...
}
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
public class Event {
@Id
@Column(name = "eventid")
private Long id;
@ManyToOne
@JoinColumn(name = "course_id")
private Course course;
// ...
}
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EventRepository extends JpaRepository<Event, Long> {
}

用法:

import java.util.Map;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Autowired
private EventRepository eventRepository;
@GetMapping
public Map<String, ? extends Object> index(@RequestParam("id") final long id) {
// find by eventid
final Optional<Event> res = eventRepository.findById(id);
res.ifPresent(e -> {
// course name
System.out.println(e.getCourse().getCourseName());
});
return res.map(e -> Map.of("id", e.getId(), "course", e.getCourse().getCourseName()))
.orElse(Map.of());
}
}

相关内容

  • 没有找到相关文章

最新更新