I am trying to achive the optimistic locking by using the @Version. But getting the exception 'object references an unsaved transient instance - save the transient instance before flushing'. I have a record in the parent table with version set to 0. Used javax.persistence.Version and not the org.springframework.data.annotation.Version, as spring annotation version is not working as expected. What am I missing here? The code is working as expected without the @Version annotation. These are my classes.
@Entity
public class ChildEntity {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToOne
@JoinColumn
private ParentEntity parent;
@Version
private Long version;
}
@Entity
public class ParentEntity {
@Id
@GeneratedValue
private Long id;
private String name;
@Version
private Long version;
}
Service class:
public ChildEntity saveChild(ChildEntity childEntity) {
return repo.save(childEntity);
}
Json to create new childEntity
{
"name" : "user1",
"parent": {
"id": 1
}
}