![](/img/trans.png)
[英]IllegalFormatConversionException d != java.lang.Integer when trying to printf date?
[英]Unsupported conversion from DATE to java.lang.Integer
因此,我使用 Java Ebean 库生成了以下 model:
package models;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import java.time.LocalDateTime;
@Entity
@Table(name = "Zeit")
public class Zeit extends BaseModel {
@Column
private LocalDateTime start;
@Column
private LocalDateTime ende;
@Column
private int pause;
@ManyToOne(optional = false)
private Benutzer benutzer;
@Column
private LocalDateTime pauseStart;
public Zeit() {
}
public Zeit(LocalDateTime start, LocalDateTime ende, int pause, LocalDateTime pauseStart) {
this.start = start;
this.ende = ende;
this.pause = pause;
this.pauseStart = pauseStart;
}
public LocalDateTime getStart() {
return start;
}
public void setStart(LocalDateTime start) {
this.start = start;
}
public LocalDateTime getEnde() {
return ende;
}
public void setEnde(LocalDateTime ende) {
this.ende = ende;
}
public int getPause() {
return pause;
}
public void setPause(int pause) {
this.pause = pause;
}
public Benutzer getBenutzer() {
return benutzer;
}
public void setBenutzer(Benutzer benutzer) {
this.benutzer = benutzer;
}
public LocalDateTime getPauseStart() {
return pauseStart;
}
public void setPauseStart(LocalDateTime pauseStart) {
this.pauseStart = pauseStart;
}
}
这导致这些 SQL 语句:
create table zeit (
id bigint auto_increment not null,
start datetime(6),
ende datetime(6),
pause integer not null,
version bigint not null,
when_created datetime(6) not null,
when_modified datetime(6) not null,
constraint pk_zeit primary key (id)
);
这个想法是我想将打开和关闭时间写到数据库中。 这基本上可以通过使用
private void btn_anmeldenActionPerformed(java.awt.event.ActionEvent evt) {
try {
Zeit z = new Zeit();
z.setStart(LocalDateTime.now());
z.setBenutzer(benutzer);
z.save();
btn_anmelden.setText(String.valueOf(z.getStart()));
btn_anmelden.setEnabled(false);
} catch (Exception e) {
}
}
但是当使用以下方法从数据库中取回实体时:
private void initState() {
Zeit lastTime = new QZeit().findList().get(0);
System.out.println(lastTime);
}
我得到错误:
com.mysql.cj.exceptions.DataConversionException: Unsupported conversion from TIMESTAMP to java.lang.Integer
到目前为止,我试图
java.util.Date
, java.sql.Date
,...)我也在使用
mysql-connector-java
:8.0.19io.ebean
:12.1.8 MySQL 中的DATETIME
数据类型表示日期和时间,但缺少任何时区或偏移量的概念。 所以这种类型不能代表一个时刻,不是时间轴上的一个点。
与此类型等效的标准 SQL 是TIMESTAMP WITHOUT TIME ZONE
。 Java 中的等效项是LocalDateTime
。
要在标准 SQL 中记录时刻,请使用TIMESTAMP WITH TIME ZONE
。 在 MySQL 中, TIMESTAMP
。 在 Java、 Instant
、 OffsetDateTime
和ZonedDateTime
中,JDBC 4.2 及更高版本需要对OffsetDateTime
的支持,而对其他两个的支持是可选的。
OffsetDateTime odt = OffsetDateTime.now() ;
myPreparedStatement.setObject( … , odt ) ; // Writing to a column of MySQL type `TIMESTAMP`, standard SQL `TIMESTAMP WIH TIME ZONE`.
恢复。
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
至于 ebean 错误,您没有提供足够的详细信息。 我们需要查看它试图实例化的 Java class。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.