我是REST webservices开发的新手。目前,我们正在使用Spring Boot,Spring JPA来开发服务。我在REST响应中返回选择列时遇到困难。我的问题如下:
我有一个10行以下列的用户表
我的用户实体对象是:
@Entity
@Table(name="user")
public class User
{
@Id
@GeneratedValue(generator="ID", strategy=GenerationType.SEQUENCE)
private long id;
@Column(name="Name")
private string name;
@Column(name="age")
private int age;
@Column(name="city")
private string city;
@Column(name="mobile number")
private string mobileNumber;
.
.
.
getter and setters
.
.
.}
我有以下两个要求:
对于第一个要求,我能够通过使用JPA的findAll()来实现它的工作
对于第二个要求,我尝试使用如下自定义查询:
@Query("select New com.org.user(u.id, u.name, u.mobileNumber) from user u")
public List<user> getList()
有了这个,我的Json响应如下所示,其他两个字段(城市和年龄)具有默认值但不是表中的实际值。
[
{
"id": 1,
"name":"Rocky"
"age":0,
"city":null,
"mobileNumber": "9080980909"
},
{
"id": 2,
"name":"Stella"
"age":0,
"city":null,
"mobileNumber": "8909012239"
}
.
.
.
.
{
"id": 10,
"name":"Una"
"age":0,
"city":null,
"mobileNumber": "78976887989"
}
]
但是我需要响应如下所示只包含三个字段
[
{
"id": 1,
"name":"Rocky",
"mobileNumber": "9080980909"
},
{
"id": 2,
"name":"Stella",
"mobileNumber": "8909012239"
},
.
.
.
{
"id": 10,
"name":"Una",
"mobileNumber": "78976887989"
}
]
有人可以帮助我如何获得上述回复?
答案 0 :(得分:0)
在您的实体上使用@JsonInclude(Include.NON_NULL)注释。它将排除json响应中的所有空字段。但是,你必须改变&#34;年龄&#34;从int到Integer数据类型,它可以为空。
@Entity
@Table(name="user")
@JsonInclude(Include.NON_NULL)
public class User
{
@Id
@GeneratedValue(generator="ID", strategy=GenerationType.SEQUENCE)
private long id;
@Column(name="Name")
private String name;
@Column(name="age")
private Integer age;
@Column(name="city")
private String city;
@Column(name="mobile number")
private String mobileNumber;
.
.
.
getter and setters
.
.
.}