Я использую dropwizard0.9.3
, чтобы создать простой API REST через MySQL (с Hibernate и Jackson - с использованием Java 8).Проблемы с сохранением ZonedDateTime от Dropwizard до MySQL
Я пытаюсь сохранить значение UTC DateTime в столбце MySQL timestamp
из прикладного уровня - хотя приложение, похоже, хорошо его обрабатывает, значение, отображаемое в db, равно BLOB
, m угадывая где-то по порядку сериализации значений правильно.
My Entity выглядит следующим образом:
@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
работ, но a BLOB
сохраняется в БД, где должна быть отметка времени (например, отображать значение, подобное 2016-06-28 10:05:22
).
Я попытался выполнить соглашения DW, используя довольно обычный бутстрап (и комплект dropwizard-java8
). Я не уверен, что я пропустил здесь, но я также новичок в DW и Java в целом.
Предложения приветствуются - спасибо.