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

@ javax.persistence.Column(updatable = false)

岳允晨
2023-03-14
问题内容

如果我将字段定义为不可更新,这是否意味着该字段永远无法更新?我想做的是在保存整个实体对象时防止字段更新,但仍然能够编写显式更新此字段的查询。这可能吗?

我正在使用Hibernate和MySQL,但我更愿意编写可移植的代码。


问题答案:

作为记录,设置updatable=false只影响SQL
UPDATE语句 产生 的持久性提供:

该列是否包含在持久性提供程序生成的SQL UPDATE语句中。

您仍然能够编写这样的SQL更新语句,以更新此列中的值。此功能在JPA规范中定义,并非特定于Hibernate / MySQL。



 类似资料:
  • 我正在使用 Oracle 数据库,我有序列和触发器用于在插入之前生成和存储 ID。 然后我有一个带有属性的简单实体: ...当我尝试构建项目时,我得到: 当我删除可插入或可更新的关键字时,它可以工作。我知道有很多解决方案如何使用 JPA 生成 ID,JPA 也可以使用(调用)预言机序列来设置(生成)ID。但我试图理解为什么我的解决方案是错误的。为什么我不能将这两个关键字与@Id注释一起使用?我的想

  • 我有一个blob字段,当我保存表中的其他字段时,它不希望被更新。尽管我已经将该字段指定为updatable=false,Hibernate似乎正在进行areEqual检查。因为该字段是延迟加载的,所以它是null,当它在保存时进行areEqual检查时,我得到了一个ClassCastException。当它不可更新时,为什么要在那个字段上进行比较? 因此,我的字段被指定为: 在org.spring

  • 问题内容: 如果对字段进行了注释,这是否意味着您不能插入值或更改现有值?你为什么想这么做? 问题答案: 当创建/更新相关实体的 责任 不在 当前 实体中时,您可以这样做。例如,您有一个和一个。您想添加与实体中实体的关系,只是因为创建或更新并不是实体的责任。相反。

  • 我使用的是spring data jpa,我有一个实体,代码如下: 我使用org . spring framework . data . JPA . repository . JPA repository进行相关的CRUD操作。 当我第一次保存实体(例如creationTimestamp=1)时,方法保存(实体)返回保存的实体(如javadoc所说),其中包含用于进一步操作的新id(如javado

  • 问题内容: 我对事实背后的想法有一个疑问,那就是只有这个属性。为什么在接口中未指定属性?您现在可能会说这是由于向后兼容性,但是我更愿意破坏兼容性,让实现该接口的用户还为prependId事情实现方法。 就组件中的prependId而言,我的主要问题是,它会中断, 我希望如果我使用,行为会发生变化,不仅与渲染有关,而且还与想要在组件树中搜索组件有关。 这里有个简单的例子: 现在,当我想获取panel

  • 问题内容: 我在表单上编写的验证有一个奇怪的问题。这是输入旁边的“检查用户名”按钮。输入的默认值是用户名,例如’betamax’。当我按“检查用户名”时,它会通过正则表达式并将用户名发送到服务器。服务器的行为符合预期,并返回“ 2”以告诉javascript他们正在提交自己的用户名。 然后,当我再次单击该按钮时,正则表达式将失败。显然没有任何内容发送到服务器,因为正则表达式已失败。如果我再次按下按