Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSpringREST和HibernateJPA-HTTP400同时放置实体两次_Java_Spring_Hibernate_Spring Mvc_Jpa - Fatal编程技术网

JavaSpringREST和HibernateJPA-HTTP400同时放置实体两次

JavaSpringREST和HibernateJPA-HTTP400同时放置实体两次,java,spring,hibernate,spring-mvc,jpa,Java,Spring,Hibernate,Spring Mvc,Jpa,我正在使用SpringMVC RESTfulWebService和hibernate编写自己的应用程序。 问题是,我在控制器中有映射到url:PUT/report的方法/ 现在,在请求主体中,我发送报表实体的JSON表示。当我运行服务器时,添加一些实体,然后尝试编辑一个实体,第一次尝试成功,但第二次和每一次都失败,并返回http 400代码。 所以就好像它可以被编辑一次?奇怪的 这是我的密码: 存储库: @Repository public class ReportHibernateReposi

我正在使用SpringMVC RESTfulWebService和hibernate编写自己的应用程序。 问题是,我在控制器中有映射到url:PUT/report的方法/

现在,在请求主体中,我发送报表实体的JSON表示。当我运行服务器时,添加一些实体,然后尝试编辑一个实体,第一次尝试成功,但第二次和每一次都失败,并返回http 400代码。 所以就好像它可以被编辑一次?奇怪的

这是我的密码:

存储库:

@Repository
public class ReportHibernateRepository implements ReportRepository {
    @PersistenceContext
    private EntityManager entityManager;

    //.......other methods............
    @Override
    public Report update(Report report) {
        Report report1 = entityManager.find(Report.class, report.getId());
        report1.setDate(report.getDate());
        report1.setReporter(report.getReporter());
        report1.setReportText(report.getReportText());
        report1.setTitle(report.getTitle());
        return report1;
    }
}
服务:

@Service
@Transactional
public class ReportService {
    @Autowired
    private ReportRepository reportRepository;

    //..........other methods...........    
    public Report update(Report report){
        return reportRepository.update(report);
    }
}
控制器:

@Controller
@RequestMapping(value = "/report")
public class ReportController {
    @Autowired
    private ReportService reportService;

    //.........other methods...........
    @RequestMapping(value = "/", method = RequestMethod.PUT)
    @ResponseBody
    @ResponseStatus(HttpStatus.NO_CONTENT)
    public void update(@RequestBody Report report){
        reportService.update(report);
    }
}

有人知道问题出在哪里吗?

首先要做的事。你不应该把它和身份证放在一起吗?放置/报告/1234?要创建没有id的新实体,请使用POST。另外,服务器上是否记录了任何异常?是的,我应该,我将更改它,因为我将忽略json中的ID,而只依赖url中的ID,但首先我必须弄清楚为什么它不想编辑我的实体:不幸的是,我的IDE中没有日志。我得到的一切是:客户端发送的请求在语法上不正确。看起来我的JSON是错误的,但仅仅是第二次尝试?你的意思是,系统输出控制器中的println?是的,或者正确地启用日志记录,这样我们就不必求助于这么难看的东西了。