Home > Blockchain >  Get fields of spring jpa interface projection
Get fields of spring jpa interface projection

Time:10-01

I have this stored procedure that I am calling in spring jpa repository and I am using interface based projection.

Whenever I try to call the interface projection method i get this error

Invoked method public abstract java.lang.Long ConfirmationDTO.memberID() is no accessor method!

Here is my projection Interface

public interface ConfirmationDTO {
       Long memberID();
       LocalDate dateEntry();
}

and the DAO

@Query(value=" CALL get_confirmation(:startDate) ", nativeQuery=true)
List<ConfirmationDTO> getConfirmation(LocalDate startDate);

Is it possible to get the field values from the interface projection ?

CodePudding user response:

You could create an implementation component and it would be autowired, but it's not recommended to annotate DTO classes.

The easiest way is to turn your interface into a class.

At the end of the day it's just a DTO, it have no logic, and on tests you can mock it as you wish just filling the properties.

I don't see the point on your DTO being an interface, unless a Class somewhere is implementing more than one interface and this one is among them.

If this is the case, I would rethink the implementation - e.g. implement TheOtherInterface extend Person.

CodePudding user response:

I found another SO thread which uses Tuple, this helped me to achieve the goal of my above question.

how-to-map-sql-native-query-result-into-dto-in-spring-jpa-repository

  • Related