JavaSpringREST和HibernateJPA-HTTP400同时放置实体两次
我正在使用SpringMVC RESTfulWebService和hibernate编写自己的应用程序。 问题是,我在控制器中有映射到url:PUT/report的方法/ 现在,在请求主体中,我发送报表实体的JSON表示。当我运行服务器时,添加一些实体,然后尝试编辑一个实体,第一次尝试成功,但第二次和每一次都失败,并返回http 400代码。 所以就好像它可以被编辑一次?奇怪的 这是我的密码: 存储库: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
@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?是的,或者正确地启用日志记录,这样我们就不必求助于这么难看的东西了。