Java – the typed method in the jparepository does not return the correct type
•
Java
I have a method in the jparepository that should return a list of JPA entities:
@Entity
public class SomeEntity {
// ...
}
@Repository
public interface SomeOtherEntityRepository extends JpaRepository<SomeOtherEntity,Long> {
@Query(value = "select some big long native query",nativeQuery = true)
public List<SomeEntity> getThings(String key);
}
When the query executes and I try to access the entries in the list, I get a ClassCastException:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to my.package.someEntity
at java.util.ArrayList.forEach(ArrayList.java:1249)
at ...
When I debug, this is what I see:
This seems to break the strongly typed variables in Java I didn't know it was possible I can change my code to expect an object array and convert the object array to an entity, but this seems to be something I shouldn't do
Solution
JPA does not seem to support specifying a result class for @ query You can use @ namednatequery or entitymanager Createnativequery to specify the result class
see http://www.thoughts-on-java.org/jpa-native-queries/
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
