Ciao, sto cercando di impratichirmi con Spring e mi sto facendo un'applicazione di prova per conto mio.
Ho però dei problemi con alcune query.
Ho creato queste due entities
codice:
package myproject.soccerpredictor.model;
import jakarta.persistence.*;
import lombok.*;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.math.BigInteger;
import java.util.Objects;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
@Table(name="campionati")
public class Campionato {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", columnDefinition="BIGINT(10) UNSIGNED")
@JsonProperty(value = "id")
private BigInteger id;
@NotNull
@Column(name="nome")
@JsonProperty(value = "nome")
private String nome;
@NotNull
@Column(name="nazione")
@JsonProperty(value = "nazione")
private String nazione;
}
e
codice:
package myproject.soccerpredictor.model;
import java.math.BigInteger;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
@Table(name="squadre")
public class Squadra {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", columnDefinition="BIGINT(10) UNSIGNED")
@JsonProperty(value = "id")
private BigInteger id;
@ManyToOne
@JoinColumn(name = "id_campionato", nullable = false)
@JsonProperty(value = "campionato")
private Campionato idCampionato;
@NotNull
@Column(name="nome")
@JsonProperty(value = "nome")
private String nome;
@NotNull
@Column(name="punti")
@JsonProperty(value = "punti")
private BigInteger punti;
@NotNull
@Column(name="differenza_reti")
@JsonProperty(value = "differenza_reti")
private BigInteger diffReti;
@NotNull
@Column(name="goal_fatti")
@JsonProperty(value = "goal_fatti")
private BigInteger goalFatti;
@NotNull
@Column(name="goal_subiti")
@JsonProperty(value = "goal_subiti")
private BigInteger goalSubiti;
}
e ho definito questa interface per le query
codice:
package myproject.soccerpredictor.repository;
import java.math.BigInteger;
import java.util.List;
import org.springframework.data.jdbc.repository.query.Query;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import myproject.soccerpredictor.model.Squadra;
public interface SquadraRepository extends JpaRepository<Squadra, BigInteger> {
@Query("SELECT u FROM Squadra u JOIN FETCH u.idCampionato WHERE u.id = :id")
Squadra findSquadraById(@Param("id") BigInteger id);
@Query("SELECT u FROM Squadra u JOIN FETCH u.idCampionato c WHERE u.nome = :nome")
Squadra findSquadraByNome(@Param("nome") String nome);
@Query("SELECT u FROM Squadra u WHERE u.idCampionato.id = :idCampionato")
List<Squadra> findSquadreByCampionato(@Param("idCampionato") BigInteger id);
}
Dopo aver aggiunto l'ultima query quando avvio il modulo da Eclipse ottengo questo errore sullo startup
org.springframework.beans.factory.UnsatisfiedDepen dencyException: Error creating bean with name 'squadraController': Unsatisfied dependency expressed through field 'squadraService': Error creating bean with name 'squadraServiceImpl': Unsatisfied dependency expressed through field 'squadraRepository': Error creating bean with name 'squadraRepository' defined in myproject.soccerpredictor.repository.SquadraReposi tory defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConf iguration: Could not create query for public abstract java.util.List myproject.soccerpredictor.repository.SquadraReposi tory.findSquadraByCampionato(java.math.BigInteger) ; Reason: Failed to create query for method public abstract java.util.List myproject.soccerpredictor.repository.SquadraReposi tory.findSquadraByCampionato(java.math.BigInteger) ; No property 'campionato' found for type 'Squadra'
Esattamente cosa sto sbagliando?
Grazie in anticipo a chi risponderà