Details
-
Bug
-
Resolution: Done
-
Major
-
4.2.0.GA_CP04, 4.3.0.GA_CP02
-
None
-
Release Notes
-
Workaround Exists
-
Description
Hibernate JIRA ref : http://opensource.atlassian.com/projects/hibernate/browse/HHH-3584
If an entity has the annotation:
@Enitity(dynamicUpdate=true)
And a field annotated as :
@Version
@Generated(GenerationTime.Always)
@Column(updateable=false, insertable=false)
The generated update sql will include the annotated field in the properties to be updated. This is incorrect and causes exceptions in certain cases. E.g updating a view where the resulting columns cross multiple tables.
When the dynamicUpdate is set to true, the sql string is generated dynamically and initially the field marked as updateable=false is flagged as not to be included. The AbstractEntityPersiter.getPropertiesToUpdate method then checks if there is a versioning field, finds the above annotated column and now flags it to be included, neglecting to check whether this versioning field has also been marked as updateable=false, or whether @Generated(GenerationTime.ALWAYS) is there. (Although the last isn't really necessary as this annotation can't be there without the column being marked as not updateable and not insertable.)
Attachments
Issue Links
- is incorporated by
-
JBPAPP-1433 Backport changes for JBPAPP-1259 to EAP 4.3.0
- Resolved