I have an entity with fields
@Temporal(TemporalType.TIMESTAMP)
@Column(name = \"edit_timestamp\",
columnDefinition=\"TIMESTAMP DEFAULT CURRENT_TIMES
Because in your initial set of annotations, all you've told it about the edit_timestamp column is that it is a timestamp; JPA doesn't know that it needs to update it. I'm guessing that when you're manually executing the SQL statement, you have some sort of on-update trigger that's changing those fields for you - but are being overwritten by the data coming from the persisted entity when you update it.
If you don't need the 'edited' count/timestamp, try removing them from the entity, and see if that works. Otherwise, you have a working solution.
You need to change the column annotation to include updatable = false. This will cause the edit_timestamp column to not show up in the update SQL, so the JPA provider won't include the current value of the field which is what is causing it to override the default.
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "edit_timestamp",
updatable = false,
columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date editTimestamp;