我同时使用了Hibernate批注和Sybase。我正在寻找设置版本列以防止锁定。数据库需要管理时间戳而不是应用程序。我想使用注释而不是hbm.xml来完成此操作。
我已经尝试了以下方法,但没有成功,
我在jboss.org上阅读以使用
@org.hibernate.annotations.SourceType.DB @org.hibernate.annotations.Generated(GenerationTime.ALWAYS)
但是我收到数据库的IDE编译错误,“找不到符号符号:类数据库位置:类SourceType”
以及rowVersion的编译错误,
版本字段或属性不是受支持的类型之一。确保它是以下类型之一:int,Integer,short,Short,long,Long,java.sql.Timestamp。
时间属性必须使用@Temporal注释进行标记。
http://docs.jboss.org/hibernate/core/3.6/reference/zh- CN/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;