@ javax.persistence.Column(updatable = false)

Mik*_*zak 4 java jpa java-ee java-ee-6

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

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

Mik*_*unu 6

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

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

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


SiB*_*SiB 5

@javax.persistence.Column( updatable=false )
Run Code Online (Sandbox Code Playgroud)

The column mapped would not be updatable using HQL or via hibernate methods. In case you need to update the value in the DB you should be writing native SQL.

如果我从逻辑上看,当你说时它不应该允许你更新updatable=false