当前位置: 首页 > 面试题库 >

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

段阳夏
2023-03-14
问题内容

我同时使用了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;


 类似资料:
  • 问题内容: 在我的SQL Server 2000数据库中,我有一个名为(设置为默认值/绑定)类型的时间戳记(功能不在数据类型中)。 我正在使用Netbeans 6.5生成的JPA实体类,并将其包含在我的代码中 但是,当我尝试将对象放入数据库时​​, 我曾尝试将to 设置为,但这引发了一个异常,说数据库不允许该列的值,而这是设计不允许的。 我以前使它在纯Hibernate中工作,但此后我切换到JPA

  • 我有一个问题是这个问题的变体:Flink:如何存储状态和在另一个流中使用? 我有两条流: val ipStream:DataStream[IP地址]= <代码>val routeStream:数据流[路由表]= 我想知道哪个包裹使用哪条路线。通常可以通过以下方式完成: 这里的问题是,我无法在这里真正为流设置密钥,因为这既需要完整的表,也需要ip地址(并且密钥必须独立计算)。 对于中的每个元素,我需

  • 问题内容: 我已经开发了一个客户维护应用程序。用户可以通过Web界面更改客户详细信息。我想处理以下情况: 加载详细信息。 加载详细信息。 更改并保存的。 只改变并保存年龄。 在上述情况下,最终数据库保留了旧名称和新年龄,因为覆盖了更新。我正在使用Hibernate。我听说Hibernate自动版本控制支持此功能。如果有人知道如何处理,请告诉我。 问题答案: 您只需要添加一个带有注释的字段: 阅读此

  • 问题内容: 我有一个应用程序,每当该应用程序第一次在计算机上运行时,Hibernate都会创建我的所有表模式。这很好。 但是现在我想知道Hibernate是否具有某种机制来使数据库保持版本控制,即当我运行不同版本的应用程序时,Hibernate是否会知道如何将一个架构迁移到另一个架构,并且Hibernate找到与旧版本不同的数据库架构。版本存在吗?考虑到Hibernate可以读取现有的架构并将架构

  • 问题内容: 我正在对jdbc操作使用Spring JDBC模板。由于我使用的是BeanPropertySqlParameterSource,因此将bean的START_TIME变量分配为java.sql.date类型。在Oracle数据库中,该列被称为“ DATE”类型(并且没有TIMESTAMP类型,即使数据库为10.2 ver) 现在当我设定 它以日期和时间戳记存储为00:00:00 请告诉我

  • 问题内容: 我目前在我的PHP项目中使用SVN。我当时想我也应该使数据库处于版本控制之下,但是最好的方法是什么?我是否只是在SVN中的项目中制作了一个数据库文件夹,将SQL更改粘贴到名为from_1.0_to_2.0.sql的文件中并提交? 问题答案: 每当您对数据库进行更改时,都应将这些更改保存在迁移中,以便以后可以在更新代码的同时在其他服务器上运行。但是您基本上有了正确的想法。您可以编写一些工