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

设置要由数据库生成的JPA时间戳列?

曹均
2023-03-14
问题内容

在我的SQL Server
2000数据库中,我有一个DATETIME名为(lastTouched设置getdate()为默认值/绑定)类型的时间戳记(功能不在数据类型中)。

我正在使用Netbeans 6.5生成的JPA实体类,并将其包含在我的代码中

@Basic(optional = false)
@Column(name = "LastTouched")
@Temporal(TemporalType.TIMESTAMP)
private Date lastTouched;

但是,当我尝试将对象放入数据库时​​,

javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.generic.Stuff.lastTouched

我曾尝试将@Basicto 设置为(optional = true),但这引发了一个异常,说数据库不允许nullTIMESTAMP列的值,而这是设计不允许的。

ERROR JDBCExceptionReporter - Cannot insert the value NULL into column 'LastTouched', table 'DatabaseName.dbo.Stuff'; column does not allow nulls. INSERT fails.

我以前使它在纯Hibernate中工作,但此后我切换到JPA,并且不知道如何告诉它该列应该在数据库端生成。请注意,我仍将Hibernate用作JPA持久层。


问题答案:

我通过将代码更改为来解决了该问题

@Basic(optional = false)
@Column(name = "LastTouched", insertable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date lastTouched;

因此,在生成SQL插入时,将忽略timestamp列。不知道这是否是解决此问题的最佳方法。欢迎反馈。



 类似资料:
  • 问题内容: 我同时使用了Hibernate批注和Sybase。我正在寻找设置版本列以防止锁定。数据库需要管理时间戳而不是应用程序。我想使用注释而不是hbm.xml来完成此操作。 我已经尝试了以下方法,但没有成功, 我在jboss.org上阅读以使用 但是我收到数据库的IDE编译错误,“找不到符号符号:类数据库位置:类SourceType” 以及rowVersion的编译错误, 版本字段或属性不是受

  • 有可能移除这个吗?或者甚至只是移动它,说到文件的末尾? 我注意到了其他类似的问题,但只是针对HTML(或即时通讯不生成的RTF)而不是PDF

  • 我有问题设置行时间戳使用Java API。 当我试图将时间戳值添加到put构造函数(或put.add())中时,什么也不会发生,从表中读取行后,我会得到系统提供的时间戳。 在独立模式下运行的HBase 0.92.1。 提前感谢您的帮助!

  • 问题内容: 我的慢查询日志中充满了如下条目: 我猜该命令是通过复制发出的,但我不知道该如何花费一秒钟。有关如何解决此问题的任何想法? 问题答案: 是MySQL中的数据类型和内置函数。您想通过以下语句实现什么? UPD :很抱歉,我不知道所使用的MySQL hacks。 看来这是从慢速日志中排除某些查询的解决方案。 OP正在使用Microslow补丁来增强慢查询日志中的统计信息,并且该语句在Inno

  • 在我的节点中创建新ObjectId时。js脚本使用: 我有一个_id像 当我使用: 我得到: 但是当我使用ObjectId(“f5818257dd0b55ce321f87b5”)时。getTimestamp()在MongoDB Shell中我得到: 当我想按对文档进行排序时: 由于中的时间戳错误,文档以错误的顺序返回。 如何让mongojs以正确的格式生成? 我真的很困惑,有人能帮我吗? 编辑:当

  • 如何在具有时间戳类型的列上使用Spring data JPA从表中检索数据。数据库是mySQL 列定义 域对象 Spring数据JPA代码 服务等级 由于DB列有一个时间戳(2017-05-07 06:45:19),因此它总是返回null,基本上我想返回所有最后更新日期为今天/当前日期的记录。