JAVA JPA возвращает несколько переменных Entity с их именами, используя интерфейс - PullRequest
1 голос
/ 16 марта 2020

Допустим, у меня есть простой класс:

public class Human{

private String id;
private String name;
priavte String surname;
priavte String something;
priavte String something2;

//geters setters

}

, и я объявил интерфейс

public interface IHuman{
String getId;
String getName;
}

в своем хранилище. Я звоню:

@Query("select r from Human r")
Page<IHuman> getIdAndName();

Который, в свою очередь, возвращает мне массив атрибутов IHuman с идентификатором и именем, но при разборе на JSON он не имеет имен переменных и возвращает только значения:

"content":[["id1","jeff"],["id2","Jones"],...]

, поэтому мой вопрос: можно связать переменные с соответствующими значениями с помощью интерфейса, чтобы получить что-то вроде:

"content":[["id":"id1","name":"jeff"],["id":"id2","name":"Jones"],...]

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Вы пишете

@Query("select r from Human r")
Page<IHuman> getIdAndName();

, который вернул бы весь Human объект.

Но вам нужны только идентификатор и имя, поэтому извлекайте их только в запросе, например

@Query("select r.id, r.name from Human r")
Page<IHuman> getIdAndName();

И это должно сопоставить ваш интерфейс с вашими значениями.

0 голосов
/ 16 марта 2020

Я git не знаю, как / почему это работает, но хорошо: переключил Query на:

 @Query("SELECT r.id as Id, r.name as Name from human r)
 Page<IHuman> getIdAndName();

и в своем классе IHuman я добавил:

@Value("#{target.Id}")
String getId();
@Value("#{target.Name}")
String getName();
...