У меня проблема с реализацией двух сущностей, названных для Country и State в Spring JPA.
Я написал код для представления сущностей Country и State, показанных ниже.
Country Entity
@Entity
@Table(name="COUNTRY",catalog ="SPRINGANGULAR")
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = {"id","code","countryName"}, exclude = "states")
public class Country {
@Id
@SequenceGenerator(name="COUNTRY_SEQ", sequenceName="COUNTRY_SEQ", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="COUNTRY_SEQ")
@Column(name="ID", nullable = false)
private long id;
@Column(name="CODE")
private String code;
@Column(name="COUNTRY_NAME")
private String countryName;
@OneToMany(fetch=FetchType.LAZY,mappedBy="country",
cascade= CascadeType.ALL)
private Set<State> states = new HashSet<State>();
public Country(String code, String countryName) {
super();
this.code = code;
this.countryName = countryName;
}
}
State Entity
@Entity
@Table(name="STATE",catalog ="SPRINGANGULAR")
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = {"id", "stateName"})
public class State {
@Id
@SequenceGenerator(name="STATE_SEQ", sequenceName="STATE_SEQ", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="STATE_SEQ")
@Column(name="ID", nullable = false)
private long id;
@Column(name="STATE_NAME")
private String stateName;
@ManyToOne(fetch=FetchType.LAZY,cascade= CascadeType.ALL)
@JoinColumn(name = "COUNTRY_ID", nullable = false)
private Country country;
public State(String stateName, Country country) {
super();
this.stateName = stateName;
this.country = country;
}
}
Затем я создаю State Reporistory для получения состояний по коду страны.
@CrossOrigin("http://localhost:4200")
@RepositoryRestResource(collectionResourceRel = "states", path = "states")
public interface StateRepository extends JpaRepository<State, Long>{
@Query("SELECT s FROM State s \n" +
"LEFT JOIN Country c ON c.id = c.id \n" +
"WHERE c.code = :code \n" +
"ORDER BY s.id ASC")
List<State> findByCountryCode(@RequestParam("code") String code);
}
Затем я пишу URL-адрес подключения в Postman, чтобы проверить, он работает.
http://localhost:8080/api/states/findByCountryCode?code=BR
Выдает ошибку
Failed to convert from type [java.lang.String] to type [java.lang.Long] for value 'findByCountryCode'; nested exception is java.lang.NumberFormatException: For input string: "findByCountryCode"
Как я могу исправить проблему?