Java 无法使用JpaRepository解析SpringMVC中的响应性

Java 无法使用JpaRepository解析SpringMVC中的响应性,java,rest,spring-mvc,spring-data-jpa,Java,Rest,Spring Mvc,Spring Data Jpa,这是我的控制器: package com.hodor.booking.controller; import com.hodor.booking.jpa.domain.Vehicle; import com.hodor.booking.service.VehicleService; import com.wordnik.swagger.annotations.Api; import org.apache.commons.lang.time.DateUtils; import org.slf4j.

这是我的控制器:

package com.hodor.booking.controller;

import com.hodor.booking.jpa.domain.Vehicle;
import com.hodor.booking.service.VehicleService;
import com.wordnik.swagger.annotations.Api;
import org.apache.commons.lang.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/api/v1/vehicles")
@Api(value = "vehicles", description = "Vehicle resource endpoint")

public class VehicleController {

    private static final Logger log = LoggerFactory.getLogger(VehicleController.class);

    @Autowired
    private VehicleService vehicleService;

    @RequestMapping(method = RequestMethod.GET)
    public List<Vehicle> index() {
        log.debug("Getting all vehicles");
        return vehicleService.findAll();
    }

    @RequestMapping(value="/save", method=RequestMethod.POST, consumes="application/json")

    @ResponseBody
    public Vehicle setVehicle(@RequestBody Vehicle vehicle) {
        log.debug("Inserting vehicle");

        if (vehicle.getLicensePlate() == null){
            return new ResponseEntity<Void>(HttpStatus.CONFLICT);
        }

        return vehicleService.saveVehicle(vehicle);
    }
}
package com.hodor.booking.controller;
导入com.hodor.booking.jpa.domain.Vehicle;
导入com.hodor.booking.service.VehicleService;
导入com.wordnik.swagger.annotations.Api;
导入org.apache.commons.lang.time.DateUtils;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.web.bind.annotation.*;
导入java.util.Date;
导入java.util.List;
@RestController
@请求映射(“/api/v1/vehicles”)
@Api(value=“车辆”,description=“车辆资源端点”)
公营车辆控制器{
专用静态最终记录器日志=LoggerFactory.getLogger(VehicleController.class);
@自动连线
私家车服务车辆服务;
@RequestMapping(method=RequestMethod.GET)
公共列表索引(){
log.debug(“获取所有车辆”);
return vehicleService.findAll();
}
@RequestMapping(value=“/save”,method=RequestMethod.POST,consumes=“application/json”)
@应答器
公共车辆设置车辆(@RequestBody-Vehicle){
日志调试(“插入车辆”);
if(vehicle.getLicensePlate()==null){
返回新的ResponseEntity(HttpStatus.CONFLICT);
}
返回车辆服务。保存车辆(车辆);
}
}
我想在上面实现的是,如果vehicle对象没有LicensePlate成员,则返回相应的HTTP状态头冲突或其他内容


我来自一个节点和表达的背景,我习惯于设置我的标题,发送响应和完成它。然而,在这种情况下(JPA),它似乎不起作用。有什么想法吗?

一种替代方法是利用Spring的验证支持,对POJO进行声明式添加验证。基本上,您可以向
车辆
类添加注释,如:

public class Vehicle {
    @NotNull
    private LicensePlate licensePlate;

    // getters, setters
}
并向控制器方法添加
@Valid
注释:

@ResponseBody
public Vehicle setVehicle(@RequestBody @Valid Vehicle vehicle) {
    log.debug("Inserting vehicle");
    return vehicleService.saveVehicle(vehicle);
}
如果验证失败,Spring将返回400响应

确保类路径上有JSR-303/JSR-349 Bean验证实现,例如Hibernate验证器(它可以在没有Hibernate的ORM支持的情况下使用)


更多信息可以在Spring参考文档的中找到。

您使用的是哪个版本的Spring MVC?从另一个职位。它声明SpringMVC4.1和更高版本使用了不同的语法。

我现在使用的是类“javax.validation.constraints.NotNull”中的
@NotNull
注释。如果null为真,则返回500服务器错误,这是一个额外的奖励,是否也有类似的注释。我想我找到了:
@Future
注释-