gpt4 book ai didi

java - 将 ZonedDateTime 从 Dropwizard 保存到 MySQL 时出现问题

转载 作者:行者123 更新时间:2023-11-29 20:50:53 28 4
gpt4 key购买 nike

我正在使用dropwizard 0.9.3 通过 MySQL 创建一个简单的 REST API(使用 Hibernate 和 Jackson - 使用 Java 8)。

当我尝试将 UTC DateTime 值从应用程序层保存到 MySQL timestamp 列时遇到问题 - 虽然应用程序似乎处理得很好,但数据库中显示的值是a BLOB,所以我猜测在正确序列化值的过程中的某个地方。

我的实体如下所示:

@Entity
@Table(name = "users")
public class User {

@Id @NotNull @JsonProperty
private String id;

@JsonProperty @NotNull
@Column(name="name", nullable=false)
private String name;

@JsonProperty @NotNull
@Column(name="email", nullable=false)
private String email;

@JsonIgnore @JsonProperty @NotNull
@Column(name="createdAt", nullable = false)
private ZonedDateTime createdAt;

// default constructor
public User() {}

public User(String name, String email) {
this.name = name;
this.email = email;

// get the current UTC timestamp
this.createdAt = ZonedDateTime.now(ZoneOffset.UTC);
}

}

对应的DAO是:

public class UserDAO extends AbstractDAO<User> {

public UserDAO(SessionFactory factory) {
super(factory);
}

public User create(User user) {
return persist(user);
}
}

资源是:

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

private final UserDAO dao;

public UsersResource(UserDAO dao) {
this.dao = dao;
}

@PUT
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@UnitOfWork
public User create(
@FormParam("name") String firstName,
@FormParam("email") String email
) {
User user = new User(name, email);
return dao.create(user);
}
}

使用简单的curl测试它是有效的,但是BLOB被保存到时间戳应该在的数据库中(例如显示像2016-06这样的值-28 10:05:22)。

我尝试遵循 DW 约定,使用相当传统的 Bootstrap (以及 dropwizard-java8 bundle )。我不确定我在这里错过了什么,但总的来说我对 DW 和 Java 也是新手。

感谢您的建议 - 谢谢。

最佳答案

DW 使用 hibernate 5+

为了让Hibernate支持java时间类型,你需要包含这个依赖:(替换为具体版本)

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.0.0.Final</version>
</dependency>

注意:这不会保存为时间戳类型。使用MySQL测试,保存为datetime类型。

(取自:Java 8 LocalDateTime and Hibernate 4)

问候,

阿图尔

关于java - 将 ZonedDateTime 从 Dropwizard 保存到 MySQL 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38071743/

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