Witam,
Posiadam dwie tabele w bazie danych w relacji wiele do wielu: wydarzenie oraz artysta.
Po wpisaniu w bazie danych prostej komendy SELECT * FROM event,artist; otrzymuje wszystkie informacje o wydarzeniu oraz artyście jaki jest do niego przypisany.
Chciałbym to teraz wystawić na endpoint i tutaj zaczyna się problem.
Posiadam klase Artysty w której są zainicjowane pola:
public class Artist {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id_artist;
@NonNull
private String name;
@NonNull
private String surename;
}
Klasa Repozytorium
public interface ArtistRepository extends JpaRepository<Artist, Long> {
Optional<ArtistHasEvent> findById(int id_artist);
}
Klasa Serwisu artysty
public class ArtistService {
@Autowired
ArtistRepository userRepository;
@Autowired
ObjectMapper objectMapper;
@CrossOrigin(origins = "http://localhost:3000")
@GetMapping("/artistss")
public ResponseEntity getArtist() throws JsonProcessingException {
List<Artist> artists = userRepository.findAll();
return ResponseEntity.ok(objectMapper.writeValueAsString(artists));
}
}
Klasa Event
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id_events;
@NonNull
private String category;
@NonNull
private String date;
@NonNull
private String description;
@NonNull
private String duration;
@NonNull
private String location;
@NonNull
private String price;
@NonNull
private String title;
}
Klasa EventRepository
public interface EventRepository extends JpaRepository<Event, Long> {
Optional<Event> findById(int id_events);
}
Klasa EventService
public class EventService {
@Autowired
EventRepository userRepository;
@Autowired
ObjectMapper objectMapper;
@CrossOrigin(origins = "http://localhost:3000")
@GetMapping("/events")
public ResponseEntity getEvents() throws JsonProcessingException {
List<Event> events = userRepository.findAll();
return ResponseEntity.ok(objectMapper.writeValueAsString(events));
}
}
W klasie DatabaseClient wystawiam endpointy przykładowo:
@CrossOrigin(origins = "http://localhost:3000")
@GetMapping("/artist/{id_artist}")
public String getArtistById(@PathVariable("id_artist") Integer id_artist) throws JsonProcessingException{
List artists = jdbcTemplate.query("SELECT * FROM artist WHERE id_artist = :id_artist",
new MapSqlParameterSource()
.addValue("id_artist", id_artist), new BeanPropertyRowMapper<>(Artist.class));
return objectMapper.writeValueAsString(artists);
}
Pytanie: Czy mogę w jakiś w miare prosty sposób wystawić polecenie SELECT * FROM event,artist; żeby jako JSON otrzymać wydarzenie oraz artyste przypisanego?