Spring JPA Multiple Keys

Dimax

Top Contributor
Hallo, kann mir jemand erklären wie ich aus der DB folgende Sätze bekomme ->
Ich habe eine DB Tabelle die heißt FreqStep . Als Primary Key dienen dort 3 Felder
projektId, programmId, typ

ich habe PK Klasse erstellt->
Java:
@Embeddable
public class FreqStepPK implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name="projekt_id", insertable=false, updatable=false)
    private int projektId;

    @Column(name="programm_id", insertable=false, updatable=false)
    private int programmId;

    @Column(name="typ")
    private String typ;....usw}
und FreqStep Klasse->
Code:
public class FreqStep implements Serializable{
    private static final long serialVersionUID = 1L;
   
    @EmbeddedId
    FreqStepPK id;
    ..usw}
Jetzt brauche ich alle Sätze die projektId =1 und programmId =2 haben
in FreqStepRepository habe ich folgende Funktion->
Java:
@Query("Select f from FreqStep f where FreqStep.FreqStepPK.projektId =?1  AND FreqStep.FreqStepPK.programmId = ?2")
    public ArrayList<FreqStep> findByProjAndProgId(Integer proj,Integer prog);
Wie soll die Query richtig gebaut sein?
 
Also, in deinem Fall:
SQL:
select f from FreqStep f where f.id.projektId = ?1 and f.id.programmId = ?2
 
@Embeddable bewirkt, dass projektId, programmId und typ als Felder innerhalb von FreqStep angelegt/erwartet werden. Also nicht über FreqStep.FreqStepPK.projektId sondern über FreqStep.projektId.

Eigentlich sollte folgendes funktionieren, wenn ich mich nicht irre.
Java:
public List<FreqStep> findByProjektIdAndProgrammId(Integer projektId, Integer programmId);

Edit: Offensichtich habe ich mich geirrt. 😂
 

Neue Themen


Zurück
Oben