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

使用Hibernate save时如何使用数据库端默认值?

苏鸿波
2023-03-14
问题内容

我在数据库中有一列,默认值为sysdate。我正在寻找一种方法来插入该默认值,而我并未向应用程序端的相应属性提供任何东西。顺便说一句,我正在使用基于注释的配置。

有什么建议吗?


问题答案:

null即使将date列定义为default SYSDATEdbms端,date列在插入时仍会得到值的原因是,default仅当在查询中未为该列提供值时,才使用该列的值。这意味着INSERT INTO即使已经给出了它也不能出现在句子中null

如果要default SYSDATE在DBMS端使用,则应配置@Columnwith
insertable=false,以使列脱离SQL
INSERT

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "myDate", insertable=false)
private Date myDate;

考虑到这种方法在创建实体时将始终忽略您提供给应用程序中属性的值。如果您确实确实希望有时提供日期,那么也许应该考虑使用数据库触发器来设置值而不是默认值。

除了使用default SYSDATEDBMS
的定义外,还有一种选择。当且仅当尚未分配日期时,才可以使用@PrePersist@PreUpdate注释在保存/更新之前将当前日期分配给属性:

@PrePersist
protected void onCreate() {
    if (myDate == null) { myDate = new Date(); }
}


 类似资料:
  • 我通过以下步骤针对libc,libc abi,编译器-rt构建clang: > < li> 为了下载(和更新)llvm和子项目,我使用了以下脚本: 首先,我使用 gcc 针对 libgcc 和 libstdc 构建 llvm、clang、libunwind,并将它们安装在 / 中。在以下所有步骤中,除了最后一个,我都使用这个新鲜的叮当。 (我几乎可以肯定,这里没有一个步骤是多余的。) 在最后一步,

  • 使用默认值几个好处: 如果变量未定义可以防止报错 如果变量为空可以提供默认值,减少条件判断,复杂默认值还是要使用条件判断标签来实现 给变量设置默认值输出 {$category.name|default='分类名为空'} {$user.user_nickname|default='这个家伙没有设置昵称'} 给系统变量设置默认值输出 {$Think.get.name|default="名称为空"}

  • 使用默认值几个好处: 如果变量未定义可以防止报错 如果变量为空可以提供默认值,减少条件判断,复杂默认值还是要使用条件判断标签来实现 给变量设置默认值输出 {$category.name|default='分类名为空'} {$user.user_nickname|default='这个家伙没有设置昵称'} 给系统变量设置默认值输出 {$Think.get.name|default="名称为空"}

  • 在ElasticSearch留档中指定了以下关于http.port配置: http。港口城市 用于绑定传入HTTP请求的端口。接受单个值或范围。如果指定了范围,则节点将绑定到该范围中的第一个可用端口。 默认为9200-9300。 假设Elasticsearch自动选择端口9202,因为9200已经在使用中。Java客户端应用程序如何知道选择了哪个端口以及必须使用哪个端口来创建RestHighLev

  • 我安装了php5.6.6作为apache 2.4模块。 当加载带有 因此,正如文档所建议的,我编辑了httpd.conf指向php.ini配置文件(在C:\php56中)。我还添加了C:\php56到PATH和PHPRC环境变量。 由于我在这个文件夹中没有任何php.ini文件,我复制并重命名了“php.ini生产”文件,并编辑了扩展路径。 当我再次显示页面时,它将保持空白。。。下面是“php--

  • 问题内容: 我想创建一个创建数据库的SQL脚本。现在,我有这个: 但是,这会产生以下错误: 我知道问题是我没有为文件名指定完全限定的路径。但是我希望能够运行此脚本,而不管数据库服务器的目录结构如何。有什么方法可以使用默认路径? 问题答案: 您可以在不指定文件详细信息的情况下创建数据库,例如: