spring-boot - 如何为从我的自定义 @Query 返回的列值创建自定义 json 对象
问题描述
我有一个对 My SQL 数据库的查询,我使用 Spring Boot 将其返回为 Json 格式。我的问题是它只返回没有键的值,例如:
[
[
"kermit",
6
]
]
我希望它像这样返回:
[
[
"name":"kermit",
"count" :6
]
]
我尝试将 Jackson Annotation 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);
}
}
但它仍然没有密钥返回。我现在应该怎么做?请帮我!非常感谢!
解决方案
首先,我同意那个评论不是有效的 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() ;
推荐阅读
- python - 如果两个列是相同的 Pandas,则在它们之间添加列
- scrapy - XPath 选择器返回空列表
- visual-studio-2019 - Visual Studio 2019 - Angular 9.1.9 - 没有实时重新加载
- javascript - google fitBounds 无法按预期工作
- google-cloud-dataflow - 状态和输出的原子性
- android - Kotlin 1.4 是否放弃对 Coroutine Actors 的支持
- python - python中隔离林是否必须设置污染值?
- python - 导入 python 模块时没有这样的文件或目录。文件肯定存在于同一路径中
- laravel - 使用两个数据透视表在 laravel 中获取多对多关系的数据
- console - 如何在 Google 控制台上将包名称更改为小写?