2017-10-09 4 views
-1

donc j'ai suivantes Entitys/tables pour un plusieurs à plusieurs: Satz, piste et la table de correspondance TracklisteTrouver des objets sur la base objet enfant au printemps de données

@Entity 
class Track{ 
    // name, id 
    @ManyToMany(targetEntity = Satz.class, fetch = FetchType.LAZY) 
    @JoinTable(
      name="trackliste", [email protected](name="TrackID"), 
    [email protected](name="SatzID")) 
    private Set<Satz> saetze; 
    // getters and setters 
} 


@Entity 
class Trackliste { 
    // id, trackid, satzid. 
    // getters and setters 
} 

@Entity 
public class Satz implements Serializable { 
// id, titel, werkId, etc 
@ManyToMany(mappedBy="saetze", fetch = FetchType.LAZY) 
private Set<Track> tracks; 
// getters and setters 
} 

et mon dépôt ressemble à ceci:

public interface SatzRepository extends CrudRepository<Satz, Integer> { 

    List<Satz> findById(int id); 
    List<Satz> findByWerkId(int id); 

    //Some query maybe? 
    //List<Satz> findByTracks(String name);? 

} 

la cartographie fonctionne jusqu'à présent, quand je l'appelle mon Webservice retourne un objet JSON et avec l'aide de débogage i peut voir que l'ensemble SatzRepository contient des objets de Track.

Maintenant vient ma question: Comment est-ce que je peux retourner un Satz basé sur le nom de Piste donné est-ce possible? Disons que j'ai une URL comme ceci: localhost:8080/rest/satz/trackname?name=%trackname%

Si vous avez besoin de plus d'informations s'il vous plaît dites-moi.

Répondre

1

Vous pouvez ajouter une méthode dans TrackRepository pour trouver une piste par son nom, vous pouvez alors obtenir une liste satz à partir de l'objet piste.

public interface TrackRepository extends CrudRepository<Track, Integer> { 

    Track findByName(String name); 

} 

@Transactional 
public TrackServiceImpl implement TrackService{ 
    @AutoWired 
    TrackRepository trackRepository; 

    List<Satz> getSatzByTrackName(String name){ 
     Track track = trackRepository.getByName(name); 

     return track != null ? track.getSaetze() : new ArrayList<>(); 
    } 
}