3

我同时使用 Hibernate 注释和 Sybase。我正在寻找设置版本列以防止锁定。数据库需要管理时间戳而不是应用程序。我想使用注释而不是 hbm.xml 来完成此操作。

我尝试了以下但没有成功,

我在 jboss.org 上阅读以使用

@org.hibernate.annotations.SourceType.DB
@org.hibernate.annotations.Generated(GenerationTime.ALWAYS)

但是我收到了 DB 的 IDE 编译错误,“找不到符号符号:类 DB 位置:类 SourceType”

以及 rowVersion 的编译错误,

Version 字段或属性不是受支持的类型之一。确保它是以下类型之一:int、Integer、short、Short、long、Long、java.sql.Timestamp。

必须使用 @Temporal 注释标记时间属性。

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#d0e5785

5.1.3.2。时间戳

示例代码

@Version
@org.hibernate.annotations.SourceType.DB
@org.hibernate.annotations.Generated(GenerationTime.ALWAYS)
@Column(name = "row_version")
private Date rowVersion;

public Date getRowVersion() {
    return rowVersion;
}

public void setRowVersion(Date rowVersion) {
    this.rowVersion = rowVersion;
}

有人能告诉我我错过了什么吗?

4

1 回答 1

3

这不是注释,而是枚举的一个字段:

@org.hibernate.annotations.SourceType.DB

你需要这个在你的领域:

@Version
@org.hibernate.annotations.Source(SourceType.DB)
@org.hibernate.annotations.Generated(GenerationTime.ALWAYS)
@Column(name = "row_version") //maybe unnecessary, because this annotation
                              //is only needed, if the column name does not
                              //match hibernate's default naming strategy
                              //(or custom strategy).
@Temporal(TemporalType.TIMESTAMP)
private Date rowVersion;
于 2012-10-12T18:19:24.537 回答