Cześć, mam problem z przefiltrowaniem mojego wyniku z zapytania do bazy danych w API.
Może najpierw przedstawię mój kod, a następnie wyjaśnię o co dokładnie mi chodzi.
@Entity
@Validated
public class Ksiazka {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idKsiazka;
private int idKategoria;
private String isbn;
@JsonView(DoubleName.class)
private String tytul;
@JsonView(DoubleName.class)
private String autor;
private int stron;
private String wydawnictwo;
private int rokWydania;
private String opis;
public Ksiazka(){ }
public Ksiazka(int idKsiazka, int idKategoria, String isbn, String tytul, String autor, int stron, String wydawnictwo, int rokWydania, String opis) {
this.idKsiazka = idKsiazka;
this.idKategoria = idKategoria;
this.isbn = isbn;
this.tytul = tytul;
this.autor = autor;
this.stron = stron;
this.wydawnictwo = wydawnictwo;
this.rokWydania = rokWydania;
this.opis = opis;
}
public int getIdKsiazka() {
return idKsiazka;
}
public void setIdKsiazka(int idKsiazka) {
this.idKsiazka = idKsiazka;
}
public int getIdKategoria() {
return idKategoria;
}
public void setIdKategoria(int idKategoria) {
this.idKategoria = idKategoria;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getTytul() {
return tytul;
}
public void setTytul(String tytul) {
this.tytul = tytul;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public int getStron() {
return stron;
}
public void setStron(int stron) {
this.stron = stron;
}
public String getWydawnictwo() {
return wydawnictwo;
}
public void setWydawnictwo(String wydawnictwo) {
this.wydawnictwo = wydawnictwo;
}
public int getRokWydania() {
return rokWydania;
}
public void setRokWydania(int rokWydania) {
this.rokWydania = rokWydania;
}
public String getOpis() {
return opis;
}
public void setOpis(String opis) {
this.opis = opis;
}
}
@RestController
@RequestMapping("/api/osoba")
public class APIController {
@Autowired
private KsiazkaRepo ksiazkaRepo;
@JsonView(OnlyName.class)
@RequestMapping(method = RequestMethod.POST, value = "/getAutor")
public Ksiazka findAutorById(@RequestParam("id") int id){
String autor = ksiazkaRepo.findAutorById(id);
String title = ksiazkaRepo.findTitleById(id);
Ksiazka ksiazka = new Ksiazka();
ksiazka.setAutor(autor);
ksiazka.setTytul(title);
return ksiazka;
}
}
@Repository
public interface KsiazkaRepo extends JpaRepository<Ksiazka, Integer> {
@Query(value = "SELECT ksiazka.tytul, ksiazka.autor FROM IEci8d0gZc.ksiazka WHERE ksiazka.rok_wydania = :id", nativeQuery = true)
List<String> findInfoById(@Param("id") int id); // here you
}
Zrzut bazy danych w załączniku!
Przechodząc do sedna.
Tworząc takie zapytanie dla przykładowo "rok_wydania" = 2014 dostaje wynik w takiej postaci:
[
{
"tytul": null,
"autor": "Język C++. Kompendium wiedzy,Bjarne Stroustrup"
},
{
"tytul": null,
"autor": "Kali Linux. Testy penetracyjne,Joseph Muniz, Aamir Lakhani"
},
{
"tytul": null,
"autor": "Praca z zastanym kodem. Najlepsze techniki,Michael Feathers"
},
{
"tytul": null,
"autor": "Tajemnice JavaScriptu. Podręcznik ninja,John Resig, Bear Bibeault"
},
{
"tytul": null,
"autor": "Java EE 6. Tworzenie aplikacji w NetBeans 7,David R. Heffelfinger"
},
{
"tytul": null,
"autor": "Projektowanie stron internetowych. Przewodnik dla początkujących webmasterów po HTML5, CSS3 i grafice. Wydanie IV,Jennifer Niederst Robbins"
}
]
Niby wszystko fajnie, bo wyciąga potrzebne mi dane z baz danych ale odpowiedz w JSON'ie już nie jest taka jaką bym chciał.
Jak sprawdzić żeby odpowiedź była rozdzielona na 2. W sensie żeby do miejsca "tytul" wpadał tytuł i odpowiednio dla miejsca "autor" wpadał tylko autor.
Żeby wyglądało to mniej więcej tak:
[
{
"tytul": "Język C++. Kompendium wiedzy",
"autor": ",Bjarne Stroustrup"
},
{
"tytul": "Kali Linux. Testy penetracyjne",
"autor": "Joseph Muniz, Aamir Lakhani"
},
{
"tytul": null,
"autor": "Praca z zastanym kodem. Najlepsze techniki,Michael Feathers"
},
{
"tytul": "Tajemnice JavaScriptu. Podręcznik ninja",
"autor": "John Resig, Bear Bibeault"
},
{
"tytul": "Java EE 6. Tworzenie aplikacji w NetBeans 7",
"autor": "David R. Heffelfinger"
},
{
"tytul": "Projektowanie stron internetowych. Przewodnik dla początkujących webmasterów po HTML5, CSS3 i grafice. Wydanie IV",
"autor": "Jennifer Niederst Robbins"
}
]
Z góry dziękuję wszystkim zainteresowanym tematem :)
- db.png (27 KB) - ściągnięć: 67