【发布时间】:2018-04-19 12:02:51
【问题描述】:
我是 Spring Boot 和 REST API 的新手,当我在 mysql 表中保存一行时,获取映射表字段的空值 JSON 响应。但是这些字段具有该映射表中的值。
我正在使用 Postman 以 JSON 格式发送请求。
我不知道如何获取包含所有字段值的响应。下面我提到了代码。
控制器类:
@RestController
public class HelpDeskController<T> extends RestUtils<T> {
@Autowired
HelpDeskService hService;
@RequestMapping(value = "/helpDesk/createTicket", method = RequestMethod.POST, headers = "Accept=application/json")
public @ResponseBody Object setTicket(@Valid @RequestBody HelpDesk ticket) {
try {
return getSuccessResponse(hService.setTicket(ticket));
} catch (StudawnException e) {
return getErrorResponse(e.getMessage());
}
}
}
服务类:
@Service
public class HelpDeskServiceImpl implements HelpDeskService {
@Autowired
HelpDeskRepository helpDeskRepository;
@Override
public Object setTicket(HelpDesk ticket) throws StudawnException {
if (ticket == null)
throw new StudawnException(ErrorCode.NULL_REQUEST);
else {
return helpDeskRepository.save(ticket);
}
}
}
模型类
@Entity
@Table(name = "Help_Desk")
public class HelpDesk {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ticket_id")
private int ticketId;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "student_id")
private Student student;
@ManyToOne
@JoinColumn(name = "category_id",nullable=false,updatable=false)
private Category category;
@ManyToOne
@JoinColumn(name = "sub_category_id",nullable=false,updatable=false)
private SubCategory subCategory;
@Column(name = "ticket_desc", length = 300)
private String ticketDesc;
@Column(name = "status")
private short status;
@Column(name = "response", length = 300)
private String response;
@Column(name = "date_created", nullable = false, updatable = false)
private Date dateCreated;
@Column(name = "date_closed")
private Date dateClosed;
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public SubCategory getSubCategory() {
return subCategory;
}
public void setSubCategory(SubCategory subCategory) {
this.subCategory = subCategory;
}
public int getTicketId() {
return ticketId;
}
public void setTicketId(int ticketId) {
this.ticketId = ticketId;
}
public String getTicketDesc() {
return ticketDesc;
}
public void setTicketDesc(String ticketDesc) {
this.ticketDesc = ticketDesc;
}
public short getStatus() {
return status;
}
public void setStatus(short status) {
this.status = status;
}
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
public Date getDateClosed() {
return dateClosed;
}
public void setDateClosed(Date dateClosed) {
this.dateClosed = dateClosed;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
Postman 中的 JSON 请求:
{
"category" : {"categoryId": 1515},
"subCategory" : {"subCategoryId": 1502},
"student" : { "studentId":1101},
"ticketDesc": "Ticket Desc21",
"status":12,
"response": "Resp12",
"dateCreated": "2018-03-12",
"dateClosed": "2018-04-12"
}
JSON 响应:
为映射表中的字段获取空值,但不为用于映射的字段(外键)获取空值。
{
"response": {
"ticketId": 22,
"category": {
"categoryId": 1515,
"categoryName": null,
"createdDate": null
},
"subCategory": {
"subCategoryId": 1502,
"subCategoryName": null,
"createdDate": null
},
"ticketDesc": "Ticket Desc21",
"status": 12,
"response": "Resp12",
"dateCreated": "2018-03-12T00:00:00.000+0000",
"dateClosed": "2018-04-12T00:00:00.000+0000"
},
"status": 200
}
【问题讨论】:
-
您需要向我们展示您的“HelpDesk”课程(假设这是您的“票证”模型)。 Spring 将尝试将 JSON 中的所有值绑定到该类的字段,反之亦然,因此命名必须相同(或通过 @JSONProperty 配置),因此可以使用 getter 和 setter。
-
@BennettDams 嗨,我已经添加了我的模型类(HelpDesk)谢谢。
标签: java json rest spring-boot