@ javax.persistence.Column(updatable = false)

时间:2012-08-16 18:29:19

标签: java java-ee jpa java-ee-6

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

我正在使用Hibernate和MySQL,但我更喜欢编写可移植代码。

2 个答案:

答案 0 :(得分:6)

作为documented,设置updatable=false仅影响持久性提供程序生成的SQL UPDATE语句:

  

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

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

答案 1 :(得分:3)

@javax.persistence.Column( updatable=false )

使用HQL或hibernate方法映射的列不可更新。如果您需要来更新数据库中的值,您应该编写本机SQL。

如果我从逻辑上看,当你说updatable=false

时,它不应该允许你更新