Как создать пользовательский объект json для столбцов, возвращаемый из моего пользовательского @Query - PullRequest
0 голосов
/ 11 января 2019

У меня есть запрос к моей базе данных SQL, и я использую Spring Boot, чтобы вернуть его в формат Json. Моя проблема в том, что это только возвращаемое значение без ключа, как:

[
  [
    "kermit",
    6
  ]
]

Я хочу вернуть как:

[
  [
    "name":"kermit",
     "count" :6
  ]
]

Я попытался добавить JAR-файл аннотации Джексона в проект и использовать @JsonProperty в своем классе модели сущностей:

@Entity
@Table(name = "act_id_membership", schema = "activiti", catalog = "")
@IdClass(ActIdMembershipEntityPK.class)
public class ActIdMembershipEntity {

    @JsonProperty("name")
    private String userId;

    @JsonProperty("group")
    private String groupId;

    @Id
    @Column(name = "USER_ID_")
    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    @Id
    @Column(name = "GROUP_ID_")
    public String getGroupId() {
        return groupId;
    }

    public void setGroupId(String groupId) {
        this.groupId = groupId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ActIdMembershipEntity that = (ActIdMembershipEntity) o;
        return Objects.equals(userId, that.userId) &&
                Objects.equals(groupId, that.groupId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(userId, groupId);
    }
}

Но он все равно возвращается без ключа. Что мне теперь делать? Пожалуйста, помогите мне! Большое спасибо!

1 Ответ

0 голосов
/ 11 января 2019

Во-первых, я согласен с парнем, который сказал, что это недопустимый формат JSON. Вы можете увидеть примеры здесь https://json.org/example.html

Во-вторых, вам нужно создать объект JSON, в котором есть поля, например:

  public class UserStat es implements Serializable {

         private String name;
         private long count;

         public String getName() {
             return name;
         } 

         public void setName(String name) {
             this.name = name;
         } 

         public long getCount() {
             return count;
         } 

         public void setCount(long count) {
             this.count = count;
         } 
  }

И в вашем собственном запросе. На основании вашего возвращения выглядит следующим образом:

  @Query("SELECT u.name, count(u) FROM User u")
   public List<UserStat> findUserStat() ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...