gpt4 book ai didi

java - 由数据库控制的 Hibernate 时间戳版本。

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:28 27 4
gpt4 key购买 nike

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

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

我在jboss.org上看到使用

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

但是我遇到了数据库的 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;
}

有人可以告诉我我缺少什么吗?

最佳答案

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

@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;

关于java - 由数据库控制的 Hibernate 时间戳版本。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12864826/

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