How to exclude an entity field when doing an update with JPA

筅森魡賤 提交于 2019-12-10 04:33:46

问题


Is there a way to make a field non-persistent at update operation but persistent at create operation with JPA - Hibernate 4?

I tried it in this way

@Transient
@Id
@Column(name = "USER_NAME", nullable = false, length = 75)
private String userName;

but with @Transient annotation the field will be transient across all CRUD operations and I want a way to specify that only on this operation is persistent (create).

Is there a way to do this?

Thanks!


回答1:


As explained in this article, you need to set updatable to false:

@Column(name = "USER_NAME", nullable = false, length = 75, updatable= false)
private String userName;

The updatable attribute instruct Hibernate to omit this column from the generated UPDATE SQL statement.

I removed the @Transient and the @Id annotations.

If this column is your PK (mapped to the entity identifier), then you can only set it during INSERT, since Hibernate doesn't allow you to update an entity identifier (the updatable attribute being redundant in this case).



来源:https://stackoverflow.com/questions/28363625/how-to-exclude-an-entity-field-when-doing-an-update-with-jpa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!