Je suis en train de cartographier les résultats d'une NativeQuery à un POJO non-entité, en utilisant SqlResultSetMapping
et ConstructorResult
exception de transtypage de classe en utilisant SqlResultSetMapping et ConstructorResult
J'utilise cette classe StreetCity
, avec la cartographie des résultats:
@Data
@SqlResultSetMapping(name = "StreetCityResult", classes = {
@ConstructorResult(targetClass = StreetCity.class, columns = {
@ColumnResult(name = "street", type = String.class),
@ColumnResult(name = "city", type = String.class) }) })
public class StreetCity {
public String street;
public String city;
public StreetCity(String street, String city) {
this.street = street;
this.city = city;
}
}
c'est la fonction qui effectue la NativeQuery
public List<StreetCity> retrieveStreetCity(String zipCode, int houseNumber) {
Query query = em.createNativeQuery(getLocationQuery(zipCode, houseNumber), "StreetCityResult");
List<StreetCity> streetCityList = query.getResultList();
return streetCityList;
}
c'est la requête qui devrait être ex Cuted
public String getLocationQuery(String zipCode, int houseNumber) {
String query =
"select straat.straatnaam as street, plaats.plaatsnaam as city "
+ " from pcreeks "
+ " left join plaats on plaats.plaatsid = pcreeks.plaatsid "
+ " left join straat on straat.straatid = pcreeks.straatid "
+ " where (...) ";
return query;
}
mais je suis toujours obtenir une exception
2017-03-05T16:35:57.736+0100|Warning: javax.ejb.EJBException
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to nl.xxx.service.business.locations.entity.StreetCity
Edit: l'erreur vient de la 2ème ligne de ce code:
List<StreetCity> streetCityList = storage.retrieveStreetCity(zipCode, houseNumber);
streetCityList.get(0).getStreet();
Oracle a le exact same example in the javadoc, donc Qu'est-ce que je fais mal?
Limite 1 n'est pas valide oracle syntaxe – BobC
vrai, j'ai oublié de le supprimer initialy, mais sans la limite 1, le re sult est le même –
cela peut-être aider.http: //stackoverflow.com/questions/26375565/jpa-2-1-constructorresult-causing-classcastexception ' –