gpt4 book ai didi

java - 如何使用 JPA 显示 JSON 列名?

转载 作者:搜寻专家 更新时间:2023-11-01 03:02:34 24 4
gpt4 key购买 nike

在我的实体类中,我有 3 个字符串以及 getter 和 setter。我正在使用 Jackson 来显示结果。我希望看到这样的列和数据...

[[id:"1", name:"Tim", address:"street"]]

但是,我只取回没有列名的数据,如下所示...

[["1","Tom","street"]]

是否有显示列名的 jackson 注释?这与编码/解码有关吗?

实体

@Entity
@Table(name = "Personnel")
public class User implements Serializable {

private String id;
private String name;
private String address;

public User(String id, String name, String address)
{
this.id = id;
this.name = name;
this.address = address;
}

@Id
@Column(name = "name", unique = true, nullable = false)
public String getName() {
return this.name;
}....
//setters getters

实现

@Transactional(readOnly=true)
public List<User> getUsers() throws Exception{
List<User> userList= new ArrayList<User>();
String qry = "select u.id, u.name, u.address from User as u where u.name = 'Tim'" ;
List<String> jsonrows;
Query query = sessionFactory.getCurrentSession().createQuery(qry);
userList.addAll(query.list());
return userList;

Controller

@RequestMapping(value = "/users/find", method = RequestMethod.GET, produces="application/json")
public List<User> getUserName() {
List<User> result= null;
try {
{ result = service.getUserList();
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

所以我尝试使用 GSON,然后使用下面的代码为我的列名取回数字。

有什么想法吗?

最佳答案

首先,您的查询实际上并未返回 List<String> .它返回 List<Object[]> ,其中每个数组包含 3 个元素:ID、名称和地址。

由于您拥有的只是列中包含的值,因此 JSON 序列化程序无法猜测数组的第一个元素是 ID,第二个是名称,第三个是地址。

如果不返回 List<Object[]>,您将获得所需的 JSON ,您的查询返回了 List<User> .然后,Gson 将拥有具有命名字段的对象,并且可以将这些 Java 对象转换为具有相同字段的 JSON 对象。

所以你的查询应该只是

 select u from User u where u.name = 'Tim'

并且该方法应该返回 List<User>此查询返回。顺便说一句,这个方法应该命名为getUsersNamedTim() ,而不是 getUser() ,这意味着该方法仅返回一个用户。

关于java - 如何使用 JPA 显示 JSON 列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com