首先,我是 Java 的初學者。我想問你,我嘗試 GET 請求,但我發現了一個例外。
GET http://localhost:8080/api/criteria/byParam?name=dateTimeAppointment&value=2019-05-15,23:00
java.lang.IllegalArgumentException: Parameter value [2019-05-15,23:00] did not match expected type [java.time.LocalDateTime (n/a)]
怎么了?
@JsonFormat(pattern="yyyy-MM-dd,HH:mm")
@Column(name = "local_date_time", columnDefinition = "TIMESTAMP")
private LocalDateTime dateTimeAppointment;
控制器
@RestController
@AllArgsConstructor
@RequestMapping("/api/criteria")
public class ClientController {
CriteriaService criteriaService;
@GetMapping("/byParam")
public List<Client> getClientsByParam(@RequestParam(value = "name") String name, @RequestParam(value = "value")
String value) {
return criteriaService.getClientByParam(name, value);
}
標準服務
public class CriteriaService {
@PersistenceContext
EntityManager entityManager;
public List<Client> getClientByParam(String name, String value) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Client> criteriaQuery = criteriaBuilder.createQuery(Client.class);
Root<Client> root = criteriaQuery.from(Client.class);
Predicate predicate = criteriaBuilder.equal(root.get(name), value);
criteriaQuery.where(predicate);
return entityManager.createQuery(criteriaQuery).getResultList();
}
請幫助我如何解決它。
uj5u.com熱心網友回復:
嘗試這樣的事情:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd,HH:mm");
Predicate predicate = criteriaBuilder.equal(root.get(name),LocalDateTime.parse(value , formatter));
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/498177.html