gpt4 book ai didi

java - 即使获取 204 作为 HTTP 状态代码,实体也不会保存在数据库中

转载 作者:太空宇宙 更新时间:2023-11-04 14:18:27 25 4
gpt4 key购买 nike

我使用 JPA 2.0 和 Hibernate 4.3.0.Final 以及 Google Guice 3.0 和 dropwizard 框架。在我的 Resource 类中,我在顶部应用了 @Transactional 注释。

@Path("/users")
@Slf4j
@Transactional
@Produces(MediaType.APPLICATION_JSON)
public class UsersResource {

@PUT
@Timed
@Path("/{userId}/userAddress")
@Consumes(MediaType.APPLICATION_JSON)
public void setUserAddress(@Valid SetUserAddressRequest request,
@PathParam("userId") String userId) {
if (!userId.equals(request.getUserId())) {
throw new BadRequestException(Constants.USERID_ID_DO_NOT_MATCH);
}
request.setUserId(userId);
setUserAddressCommandProvider
.get()
.withRequest(request)
.run();
}
}

我在命令类中的运行函数如下所示

private User getUserByUserId(String userId) throws ResourceNotFoundException {
Optional<User> optionalUser = userRepository.getUser(userId);
if (optionalUser.isPresent()) {
return optionalUser.get();
}
throw new ResourceNotFoundException(Constants.COULD_NOT_FIND_USER);
}

public Void run() throws ResourceNotFoundException, WebApplicationException {
User user = getUserByUserId(request.getUserId());
String address = request.getAddress();
if (user.getAddress() != null) {
throw new ResourceConflictException(Constants.ADDRESS_ALREADY_EXISTS);
}
user.setAddress(address);
user.setUpdatedAt(new Date());
return null;
}

问题是大多数情况下地址都会被保存,但有时即使我收到 204 作为响应代码也不会保存。任何有关如何调试它的指示将不胜感激。

更新:当我打开 Debug模式时,我在日志中看到此异常

 org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl: Exception clearing
maxRows/queryTimeout [org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement
with address: "com.mysql.jdbc.JDBC4PreparedStatement@76eb0f79: EXCEPTION:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
No operations allowed after statement closed." is closed.]

最佳答案

您是否尝试过在 setUserAddress 方法上使用 @UnitOfWork 注释? https://dropwizard.github.io/dropwizard/manual/hibernate.html

关于java - 即使获取 204 作为 HTTP 状态代码,实体也不会保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com