【问题标题】:sqlserver hibernate date mappingsqlserver休眠日期映射
【发布时间】:2014-01-06 09:45:16
【问题描述】:

我有一个 SQLServer,并且正在使用休眠将实体映射到我已经拥有的表。 该表有一个类型为“timestamp”[field_date] timestamp NOT NULL 的字段,这是该表唯一的日期。

我尝试将它映射到这样的实体上:

@Column(name="field_date")
private Date date;

甚至

@Column(name="field_date",columnDefinition="TIMESTAMP")
private Date date;

但每次我尝试对该实体进行选择时,我都会收到类型为 SQLServerException 的

 Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The conversion from timestamp to TIMESTAMP is unsupported.

【问题讨论】:

  • 每当我使用日期时,我总是使用@Temporal 注解来定义它是什么类型。这还没有让我失望,但我从来没有使用过 SQLServer,所以我不愿意提供它作为答案。
  • @Gimby 是的,确实@Temporal,正如彼得所建议的那样,在这种情况下也被证明是最好的解决方案。不过还是谢谢

标签: java sql sql-server hibernate


【解决方案1】:

1) 尝试将其映射到 Java 类 java.sql.Timestamp。

http://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.html

另外,我会尝试从您的注释中删除它
columnDefinition="TIMESTAMP"

2) 这是另一个可以尝试的映射。
因此,您也可以尝试这种方法。

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CreatedOn", nullable = false)
public Date getCreatedOn() {
    return this.createdOn;
}

public void setCreatedOn(Date createdOn) {
    this.createdOn = createdOn;
}

3) 这和 2) 类似,但如果你愿意,可以使用它
类字段的映射(不适用于 getter)。

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "Last_Updated_Date", nullable=false)
private Date lastUpdatedDate;

【讨论】:

  • 你好彼得,谢谢你,你的第一个建议没有奏效,并给出了同样的例外,@temporal 注释很有效。谢谢
猜你喜欢
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
相关资源
最近更新 更多